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