C での間違ったデータ型入力の処理
ユーザーが適切なデータ型を指定していることを確認することは、予期しない動作や無限ループを防ぐために非常に重要です。 C では、間違った入力を処理するのが難しい場合があります。
問題ステートメント:
プログラムが整数入力を予期し、ユーザーが文字を入力すると、プログラムは無限大文字を入力します。ループ。逆に、整数が予期されているのに文字が入力された場合にも同じ問題が発生します。
解決策:
std::cin 関数の不正な入力により無限ループが発生します。入力が失敗するとフラグが設定されます。これを解決するには、
コード スニペットの例を次に示します:
while (std::cout << "Enter a number" && !(std::cin >> num)) { std::cin.clear(); // clear bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // discard input std::cout << "Invalid input; please re-enter.\n"; }
このコードは、ユーザーが有効な番号を入力するまでループします。不正な入力フラグをクリアし、無効な入力を破棄し、ユーザーに再試行するように求めます。
代替アプローチ:
std::cin を使用する代わりに、入力を文字列として取得し、std::stoi を使用して整数に変換することもできます。このアプローチにより、入力を整数変数に割り当てる前に変換を検証できます。
以上がC での不正なデータ型入力による無限ループを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。