2

设置失败位后:当我首先调用 cin.clear() 然后调用 cin.ignore() 时,程序是正确的。当我第一次调用 cin.ignore() 然后 cin.clear() 时,忽略似乎不起作用,为什么?

4

2 回答 2

2

cin.clear()清除故障位,但cin.ignore()没有。

这意味着,如果流处于无效状态,clear()随后调用ignore()会将状态重置为良好,然后忽略下一个字符。

另一方面,调用ignore()后面的clear()方法ignore()将失败,然后clear()将继续重置流状态。因此,在这种情况下,不会忽略下一个字符。

于 2012-08-17T09:04:06.187 回答
2

cin.ignore()仅当cin.good()is时才使用流中的数据true。如果failbit设置了 ,那么cin.good()将是false

于 2012-08-17T09:12:35.330 回答