如何在C ++中将用户输入验证为double?

如何在C ++中将用户输入验证为double?

我如何检查输入是否真的是双倍的?

double x;while (1) {
    cout << '>';
    if (cin >> x) {
        // valid number
        break;
    } else {
        // not a valid number
        cout << "Invalid Input! Please input a numerical value." << endl;
    }}//do other stuff...

上面的代码无限输出Invalid Input!语句,因此它不会提示输入其他内容。我想提示输入,检查它是否合法...如果它是双,继续......如果它不是双,再次提示。

有任何想法吗?


ITMISS
浏览 594回答 3
3回答

慕的地8271018

试试这个:while&nbsp;(1)&nbsp;{ &nbsp;&nbsp;if&nbsp;(cin&nbsp;>>&nbsp;x)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;valid&nbsp;number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;not&nbsp;a&nbsp;valid&nbsp;number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"Invalid&nbsp;Input!&nbsp;Please&nbsp;input&nbsp;a&nbsp;numerical&nbsp;value."&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin.clear(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(cin.get()&nbsp;!=&nbsp;'\n')&nbsp;;&nbsp;//&nbsp;empty&nbsp;loop &nbsp;&nbsp;}}这基本上清除了错误状态,然后读取并丢弃在前一行输入的所有内容。

侃侃无极

一种方法是检查浮点数是否相等。double&nbsp;x;while&nbsp;(1)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;'>'; &nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;>>&nbsp;x; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(x&nbsp;!=&nbsp;int(x))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;valid&nbsp;number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;not&nbsp;a&nbsp;valid&nbsp;number &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"Invalid&nbsp;Input!&nbsp;Please&nbsp;input&nbsp;a&nbsp;numerical&nbsp;value."&nbsp;<<&nbsp;endl; &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP