【发布时间】:2012-05-22 01:25:07
【问题描述】:
cin.ignore 和 cin.sync 有什么区别?
【问题讨论】:
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 似乎会跳过它。但是,如果没有换行符,两者都将等待两个输入。丢弃任何未读取的内容可以解决该问题,但同样不一致。
【讨论】: