ホームページ >バックエンド開発 >C++ >C でユーザーからの整数入力を効果的に検証するにはどうすればよいですか?

C でユーザーからの整数入力を効果的に検証するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 21:41:13490ブラウズ

How Can I Effectively Validate Integer Input from the User in C  ?

ユーザー入力の整数の有効性のチェック

ユーザー入力を使用する場合、入力されたデータが予期された形式と一致していることを確認することが重要です。整数値が必要な場合、ユーザーが誤って数字以外の文字を入力してしまうシナリオが発生する可能性があります。

この記事では、標準入力ストリーム cin からの入力が整数であるかどうかを確認することで、この問題に対処する解決策を提供します。か否か。実装の詳細な内訳は次のとおりです。

int x;
cin >> x;

if (cin.fail()) {
    // Not an int.
}

cin.fail() 関数は、入力ストリームの状態をチェックします。入力操作が成功しなかった場合 (無効な入力などにより)、関数は true を返し、フェイルビット フラグを設定します。それ以外の場合は、false を返します。

このアプローチにより、入力が整数であるかどうかを判断できます。そうでない場合は、有効な整数を再入力するようユーザーに求めるなど、適切なアクションを実行できます。

入力ストリームに非 int 文字とそれに続く整数が含まれるシナリオでは、次のループを使用できます。 :

int x;
while (cin.fail()) {
    cin.clear();
    cin.ignore(256, '\n');
    cin >> x;
}

cin.clear() 関数はフェイルビット フラグをクリアしますが、cin.ignore(256, 'n')最初の改行文字または 256 文字のいずれか早い方までの残りの入力文字をスキップします。

あるいは、ユーザーが整数以外の文字列を入力する可能性がある場合は、入力を文字列として読み取り、それが文字列であるかどうかを確認できます。数値のみが含まれている場合は、整数に変換します。ただし、このアプローチは浮動小数点数が予期される場合には適さない可能性があります。

要約すると、提供されたコード スニペットを使用すると、標準入力ストリームからの入力が整数であるかどうかを確認できます。そうでない場合は、プログラム内で有効な整数値のみが受け入れられるように、状況に応じて対処できます。

以上がC でユーザーからの整数入力を効果的に検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。