cin.ignore和cin.sync之间的区别

5fo*_*fox 10 c++ iostream

cin.ignore和之间有什么区别cin.sync

chr*_*ris 15

cin.ignore丢弃字符,最多为指定的数字,或者直到达到分隔符(如果包含).如果不带参数调用它,它会从输入缓冲区中丢弃一个字符.

例如,cin.ignore (80, '\n')将忽略80个字符,或者忽略它到达换行符之前找到的数量.

cin.sync丢弃输入缓冲区中的所有未读字符.但是,并不保证在每个实现中都这样做.因此,ignore如果您想要一致性,这是一个更好的选择.

cin.sync()只会清除剩下的东西.我能想到的唯一的使用sync(),不能用做ignore是一个替代品system ("PAUSE");:

cin.sync(); //discard unread characters (0 if none)
cin.get(); //wait for input
Run Code Online (Sandbox Code Playgroud)

有了cin.ignore()cin.get(),这可能有点混合:

cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); //wait for newline
//cin.get()
Run Code Online (Sandbox Code Playgroud)

如果还剩下换行符,ignore那么看起来就会跳过它.但是,如果没有换行,则将两个输入等待两个输入.丢弃任何未读取的内容可以解决该问题,但同样不一致.