フェイルビットが設定された後: 最初に 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()
が の場合にのみ、ストリームからデータを消費する作業を行いますtrue
。failbit
が設定されている場合は、 にcin.good()
なりますfalse
。
于 2012-08-17T09:12:35.330 に答える