cin.ignore
和 和有什么不一样cin.sync
?
问问题
15641 次
1 回答
17
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()
and cin.get()
,这可能有点混合:
cin.ignore (std::numeric_limits<std::streamsize>::max(),'\n'); //wait for newline
//cin.get()
如果剩下一个换行符,只是 putignore
似乎会跳过它。但是,如果没有换行符,两者都将等待两个输入。丢弃任何未读取的内容可以解决该问题,但同样不一致。
于 2012-05-14T14:34:28.130 回答