ホームページ > バックエンド開発 > C++ > フェイルビットを使用して C の数値入力を検証する方法は?

フェイルビットを使用して C の数値入力を検証する方法は?

DDD
リリース: 2024-11-15 11:50:02
オリジナル
902 人が閲覧しました

How to Validate Numeric Input in C   Using the failbit?

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 サイトの他の関連記事を参照してください。

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