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

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

Patricia Arquette
リリース: 2024-12-07 02:47:14
オリジナル
304 人が閲覧しました

How Can I Effectively Verify Integer User Input in C  ?

ユーザー入力が整数として検証される

問題ステートメント

C プログラムでは、ユーザー入力が整数であることを確認することが重要です特に数学的演算を実行する場合、予期された形式になっています。この記事では、ユーザーが提供した入力が整数であるかどうかを判断する方法について説明します。入力が整数でない場合、プログラムはユーザーに有効な整数を再入力するよう求めます。

解決策

ユーザー入力を検証するには、主に 2 つの方法があります。整数として:

1。 cin.fail() の使用:

  • cin >> を使用して入力を読み取ります。
  • if (cin.fail() を使用して入力ストリームの状態を確認します) ).
  • cin.fail() が true の場合、入力が整数。

2。 std::getline と文字列操作の使用:

  • std::getline(std::cin, theInput) を使用して、入力を文字列としてキャプチャします。
  • if を使用した数値以外の文字の文字列(theInput.find_first_not_of("0123456789") != std::string::npos).
  • 条件が true の場合、入力に数値以外が含まれていることを意味します

実装

以下は、std::getline と文字列操作のアプローチを実装するコード スニペットです。

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}
ログイン後にコピー

このコードは、有効な整数が入力されるまで、ユーザーに整数の入力を求め続けます。ユーザーが数字以外の文字を入力したり、空の入力を行ったりする状況を処理します。

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

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