C++ では、間違った入力をどのように処理しますか? 同様に、プログラムが整数を要求する場合、文字を入力すると何かを実行してからループして入力を繰り返すことができますが、整数が必要なときに文字を入力するとループは無限になり、その逆も同様です。
質問する
68373 次
4 に答える
55
プログラムが無限ループに陥る理由はstd::cin
、入力の失敗により の不良入力フラグが設定されているためです。やるべきことは、そのフラグをクリアして、入力バッファから不正な入力を破棄することです。
//executes loop if the input fails (e.g., no characters were read)
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";
}
これについては C++ FAQを参照してください。また、条件に最小値や最大値を追加するなど、他の例も参照してください。
std::stoi
別の方法は、入力を文字列として取得し、変換を確認できる他の方法で整数に変換することです。
于 2012-04-27T11:34:29.053 に答える
-6
入力をテストして、プログラムが期待するものであるかどうかを確認します。そうでない場合は、ユーザーが提供した入力が受け入れられないことをユーザーに警告します。
于 2012-04-27T11:36:43.317 に答える
-6
ASCII 値が 65 t0 90 または 97 から 122 の範囲にある場合は、ASCII 値で確認できます。
于 2012-04-27T11:40:54.887 に答える