2

ユーザーが C++ プログラムでのみ実数を入力するように制限するにはどうすればよいですか?

例:

倍数; cin >> 番号;

'12add' 、 'abcd' などの入力は受け付けません。

誰かが私をそれに導くことができますか?ブール値を使用します。ありがとう!

4

9 に答える 9

3

ユーザーに正しい入力を強制することはできません。ただし、前の入力が無効である場合は、別の入力を求めることができます。そのためにはさまざまな手順があります。1つは次のとおりです。

  1. getline行を読むために使用します
  2. 行を解析して理解する
  3. 行が無効な場合は、ユーザーにエラーを与えて 1 に進みます

これは問題なく、非常に一般的です。ただし、動的メモリを使用します。別のオプションは次のとおりです。

  1. cin >> value;いつものように使う
  2. cin.fail()入力が正しく読み取られたかどうかを確認します (以下も確認してくださいcin.eof())
  3. 失敗した場合、空白になるまですべての入力を無視します。

    char c;
    while (cin >> c)
        if (isspace(c))
            break;
    

これには、次のような誤った入力があるという追加の利点があります。

abc 12.14

行全体を無視するのではなく、abc.

于 2013-07-26T10:01:53.807 に答える
0

正規表現を使用して解決できます

double inputNumber()
{
    string str;
    regex regex_double("-?[0-9]+.?[0-9]+");
    do
    {
        cout << "Input a positive number: ";
        cin >> str;
    }while(!regex_match(str,regex_double));

    return stod(str);
}

ヘッダーに正規表現ライブラリを含めることを忘れないでください。

于 2015-06-03T02:29:08.970 に答える
0

機能をチェックしてくださいsscanf

于 2013-07-26T18:31:48.697 に答える
0

残念ながら、それを避けることはできません...文字列を入力として受け入れ、文字列を解析して(おそらく正規表現を使用して)正確さを確認できます。

于 2013-07-26T09:51:58.427 に答える
0

データを として取得しstd::string、標準の文字列変換関数の 1 つを使用して、コンテンツが期待どおりかどうかを確認できます。

于 2013-07-26T09:53:50.693 に答える