文字入力で数値入力を期待する場合の cin による無限ループ
問題のコードでは、文字入力ではなく cin による無限ループが発生します。
無限の説明Loop
cin は数値以外の入力を検出すると失敗状態になり、コマンド ラインへのさらなる入力のプロンプトを停止します。これにより、ユーザーの操作なしでループが実行され続けます。
cin による無効な入力の検出
この問題を回避し、無効な入力を検出するには、cin が
if (cin.fail()) { // Handle invalid input here }
を使用して失敗状態にある場合、失敗状態が発生した場合は、それをクリアして不正な入力を破棄できます。使用:
cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
これにより、cin が動作状態にリセットされ、入力のプロンプトを続行できるようになります。
より高度な検証のために、文字列入力ストリームを使用して入力文字をチェックできます。文字ごとに、より高度な検証を実行します。
以上が非数値入力で「cin」が無限ループを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。