故障位是否会影响 cin 上的调用忽略

Does the failbit effect the call ignore on cin?

本文关键字:调用 cin 是否 影响 故障      更新时间:2023-10-16

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

cin.clear()清除

故障位,但cin.ignore()不会。

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

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

cin.ignore()仅在true时从流中使用数据cin.good()。如果设置了failbit,则将cin.good() false