cin.ignore
和 cin.sync
有什么区别?
最佳答案
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
似乎就会跳过它。但是,如果没有换行符,将两者都放置将等待两个输入。丢弃任何未读取的内容可以解决该问题,但同样是不一致的。
关于c++ - cin.ignore 和 cin.sync 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585392/