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

C で `cin` が数値入力のみを受け付けるようにするにはどうすればよいですか?

DDD
リリース: 2024-12-17 07:34:25
オリジナル
614 人が閲覧しました

How to Make `cin` Accept Only Numerical Input in C  ?

cin 読み取り専用数値の作成

cin を使用して数値入力を強制すると、特に混合入力タイプを処理する場合に課題が生じる可能性があります。この記事では、cin が数値のみを受け入れるようにするための解決策を調査します。

提供されたコードでは、while ループは数値以外の文字を無視して無効な入力を修正しようとします。ただし、このメソッドは複数の入力を処理するときに制限に直面します。

解決策: std::getline と std::string を使用する

このハードルを克服するには、次の方法を使用できます。より包括的なアプローチ:

  1. を使用して行全体を読み取ります。 std::getline(): これは、ユーザー入力の完全な行を文字列として読み取ります。
  2. std::stringstream:

      入力から stringstream ss を作成するline.
    • >> を使用して double を抽出しようとします。演算子。
  3. 変換を検証します:

      変換が成功したかどうか、およびストリームが最後に到達したかどうかを確認します。文字列 (eof()) の。
    • 成功した場合、ループを終了します。それ以外の場合は、エラー メッセージが表示されます。
実装例は次のとおりです。

#include <sstream>
#include <string>

int main()
{
    std::string line;
    double d;
    while (std::getline(std::cin, line))
    {
        std::stringstream ss(line);
        if (ss >> d)
        {
            if (ss.eof())
            {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
ログイン後にコピー
このソリューションにより、整数と浮動小数点数の両方が正しく処理されることが保証されます。 、数字以外の文字は完全に破棄されます。

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

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