誤ったデータ型入力に対処する方法
C では、プログラムの整合性を維持するために、無効な入力に対処することが重要です。たとえば、整数をリクエストしたときに文字入力が発生した場合、プログラムはエラーを適切に処理し、正しい入力を再度要求する必要があります。ただし、予期しないタイプの入力が発生すると、無限ループが発生する可能性があります。
無限ループの理由
無限ループは、入力ストリームの「不正な入力」フラグが設定されているために発生します。予期した入力が受信されなかった場合に設定されます。不正な入力フラグは手動でクリアする必要があり、間違った入力はストリーム バッファーから破棄されます。
入力検証を使用した解決策
無限ループを防ぐには、次の方法を使用します。アプローチ:
// Loop if input fails (e.g., no characters were read) while (std::cout << "Enter a number" && !(std::cin >> num)) { std::cin.clear(); // Clear the bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard the input std::cout << "Invalid input; please re-enter.\n"; }
代替入力アプローチ
入力検証を使用する代わりに、入力を文字列として取得し、std::stoi または変換ステータス チェックを提供する同様のメソッドを使用して整数への変換を試みることができます。
以上がC で誤ったデータ型入力を処理するときに無限ループを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。