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