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

时间:2012-05-14 14:31:52

标签: c++ iostream

cin.ignorecin.sync之间的区别是什么?

1 个答案:

答案 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}}放入其中即可。但是,如果没有换行,则将两个输入等待两个输入。丢弃任何未读取的内容可以解决该问题,但同样不一致。