cin.ignore
和cin.sync
之间的区别是什么?
答案 0 :(得分: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
:
cin.ignore()
使用cin.get()
和cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); //wait for newline
//cin.get()
,这可能有点混合:
ignore
如果还剩下换行符,只需将{{1}}放入其中即可。但是,如果没有换行,则将两个输入等待两个输入。丢弃任何未读取的内容可以解决该问题,但同样不一致。