数字の代わりに文字を入力すると無限ループ
整数ではなく文字入力が発生すると、指定されたコードは次の状態に陥ります。 「入力した数値は負の数値です。続行するには正の数値を入力してください。」というメッセージが表示されながら無限ループします。これは次のことが原因で発生します。
問題:
無効な入力 (この場合は文字) が発生すると、cin ストリームが適切に処理されません。これにより、ストリームが「フェイルビット」フラグが設定されているという誤った状態のままになります。
解決策:
この問題を解決するには、次の手順を実行します。
数値を読み取るときに入力が成功したかどうかを確認します (ストリーム操作演算子で cin を使用) >>):
while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); }
cin が失敗した場合はストリームをクリアし、誤った入力文字を無視します (clear() とignore() を使用):
これらの手順を実装すると、プログラムは無効な入力を検出し、ストリームをクリアし、ユーザーにプロンプトを表示します。正の整数を入力すると、無限ループにならずにプログラムを続行できるようになります。
以上がC で数値以外の値を入力するときに無限ループを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。