無効な入力と cin による無限ループ
cin を使用して入力を読み取る場合、入力が期待通りのタイプ。この問題は、数字を入力しようとして誤って文字を入力した場合に特に顕著です。
この問題は、cin が無効な入力に遭遇したときに入る失敗状態に起因します。このようなシナリオでは、cin は入力を求めるプロンプトを表示しなくなり、無限ループが発生します。
この動作を防ぐための 1 つの解決策は、cin が失敗状態にあるかどうかを確認することです。そうであれば、失敗状態はクリアされ、cin.ignore() を使用して不正な入力が破棄されます。これにより、cin は通常の動作に戻り、さらなる入力を求めることができます。
if (cin.fail()) { cout << "ERROR -- Invalid input detected" << endl; cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
あるいは、std::getline() を使用して入力を文字列として読み取り、試行する前により高度な検証チェックを実行することもできます。それを数値に変換します。このアプローチにより、柔軟性が向上し、より複雑な入力検証が可能になります。
以上が`cin` による無効な入力によって引き起こされる無限ループを防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。