ホームページ > バックエンド開発 > C++ > `cin` による無効な入力によって引き起こされる無限ループを防ぐには?

`cin` による無効な入力によって引き起こされる無限ループを防ぐには?

Susan Sarandon
リリース: 2024-12-31 14:48:12
オリジナル
489 人が閲覧しました

How to Prevent Infinite Loops Caused by Invalid Input with `cin`?

無効な入力と cin による無限ループ

cin を使用して入力を読み取る場合、入力が期待通りのタイプ。この問題は、数字を入力しようとして誤って文字を入力した場合に特に顕著です。

この問題は、cin が無効な入力に遭遇したときに入る失敗状態に起因します。このようなシナリオでは、cin は入力を求めるプロンプトを表示しなくなり、無限ループが発生します。

この動作を防ぐための 1 つの解決策は、cin が失敗状態にあるかどうかを確認することです。そうであれば、失敗状態はクリアされ、cin.ignore() を使用して不正な入力が破棄されます。これにより、cin は通常の動作に戻り、さらなる入力を求めることができます。

if (cin.fail()) {
  cout << "ERROR -- Invalid input detected" << endl;
  cin.clear();
  cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
ログイン後にコピー

あるいは、std::getline() を使用して入力を文字列として読み取り、試行する前により高度な検証チェックを実行することもできます。それを数値に変換します。このアプローチにより、柔軟性が向上し、より複雑な入力検証が可能になります。

以上が`cin` による無効な入力によって引き起こされる無限ループを防ぐには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート