C での数値入力の検証
数値を受け入れるプログラムにとって、ユーザー入力の検証は非常に重要です。 C では、入力が数値かどうかをチェックする 1 つのアプローチは、入力ストリーム cin のフェイルビット機能を利用することです。
フェイルビットによる入力有効性のチェック
When cin無効な入力が発生すると、入力ストリームにフェイルビットが設定されます。この状態を確認するには、次の構文を使用できます。
int n; cin >> n; if (!cin) // or if (cin.fail()) { // User did not input a number cin.clear(); // Reset failbit }
フェイルビットが設定されている場合は、入力が有効な数値ではなかったことを示します。この場合、cin.clear() を使用してフェイルビットをリセットしてエラー状態をクリアする必要があります。
cin.ignore() による不良入力のクリア
クリア後フェイルビットがある場合は、次を使用してストリームから無効な入力を破棄する必要があります。 cin.ignore():
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Skip bad input
この行は、次の改行文字 ('n') までのすべての文字を読み取って破棄し、不正な入力を効果的にクリアします。
無効な入力の処理
不正な入力がクリアされたら、ユーザーに入力を再入力するよう求めることができます。これは、有効な入力が受信されるまで継続するループを使用して実行できます。
while (cin.fail()) { // User input was invalid cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Prompt user to re-enter input cout << "Invalid input. Please enter a valid number: "; cin >> n; }
failbit メソッドと cin.ignore() メソッドを活用することで、C での数値入力を効果的に検証し、プログラムが確実に処理できるようにすることができます。有効なユーザー入力と無効なユーザー入力の両方が正常に実行されます。
以上がフェイルビットを使用して C の数値入力を検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。