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

The difference between cin.ignore and cin.sync

本文关键字:cin 区别 之间 sync ignore      更新时间:2023-10-16

cin.ignorecin.sync有什么区别?

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

例如,cin.ignore (80, 'n')将忽略 80 个字符,或者忽略找到的任意数量的字符,直到它找到换行符。

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

cin.sync()只会清除剩下的东西。对于ignore无法完成的sync(),我能想到的唯一用途是替换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似乎会跳过它。但是,如果没有换行符,则同时放置两者将等待两个输入。丢弃任何未读取的内容可以解决这个问题,但同样,并不一致。