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

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

cin.clear()清除cin.clear()位,但是cin.ignore()不会。

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

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

如果cin.good()true cin.ignore()只会从stream中消耗数据。 如果cin.good() failbit被设置,那么cin.good()将是false