ホームページ >バックエンド開発 >C++ >C の `cin` を使用して数値のみを入力するにはどうすればよいですか?

C の `cin` を使用して数値のみを入力するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-16 07:47:10772ブラウズ

How Can I Ensure Only Numeric Input Using C  's `cin`?

入力検証の強化: 数値入力のみを受け入れる

cin を使用してユーザー入力を受信する場合、特にデータを処理する場合には、データの正確性を強制することが重要です。数値を使用します。提供されたコードでは、「1x」の「x」などの数字以外の文字が無視されるという問題が発生し、誤った結果が生じる可能性があります。

堅牢なソリューション

この問題を修正するためのより徹底的なアプローチは、 std::getline と std::string を使用して、数値以外の文字列を含む入力行全体をキャプチャすることです。文字。次の拡張コード スニペットは、このアプローチを示しています。

#include <string>
#include <sstream>

double enter_number()
{
    double number;
    std::string line;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> number) {
            if (ss.eof()) { // Success
                break;
            }
        }
        std::cout << "Invalid input" << std::endl;
        std::cout << "Try again" << std::endl;
    }
    return number;
}

実装の説明

  • std::getline は、スペースや特殊文字を含む入力行全体をキャプチャします。
  • std::stringstream は、入力行を double に変換するために使用されます。データ型。
  • >>演算子は入力行から数値を抽出します。
  • eof チェックにより、ループを終了する前に行全体が double に正常に変換されたことが確認されます。
  • 結論

    この強化されたアプローチでは、数字以外の文字を入力しようとすると無効な入力としてフラグが立てられ、ユーザーは有効な番号を再入力するよう求められます。このソリューションは、元のコードで示された問題に効果的に対処し、入力行に数値以外の文字が追加されても、有効な数値入力のみが受け入れられるようにします。

    以上がC の `cin` を使用して数値のみを入力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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