检查输入的值是否为浮点数,清除cin

时间:2014-05-21 17:07:45

标签: c++ double cin

我已尝试过此代码的一些不同变体,但我似乎无法做到正确。我对c ++很新,所以可以解释一下。此代码是简单计算器的一部分。它基本上要求用户输入两个数字(它们可以是浮点数),然后要求用户输入数学运算符然后进行操作。如果用户输入的内容不是数字,然后在要求从if语句再次输入数字时输入数字,则控制台会打印" -9.25596e + 061"。这是代码:

#include "stdafx.h"
#include <iostream>
#include <cctype>
using namespace std;

double getUserInput()
{
    //Make double, assign double, return double if number
    double dUserInput;

    //checks if it failed to cin
    if (!(cin >> dUserInput))
    {
        //statement is true
        cin.clear();
        cin.ignore(99999, '\n');
        cout << "You did not enter a number, please try again: ";
        getUserInput();
    }else
        //statement if false
    cout << "Number entered"; //for debugging purposes
    return dUserInput;
}

1 个答案:

答案 0 :(得分:3)

您错过了在return的递归调用中添加getUserInput

更改行

    getUserInput();

    return getUserInput();

<强>更新

您可以将该功能更改为非递归版本。

double getUserInput()
{
    //Make double, assign double, return double if number
    double dUserInput;

    //checks if it failed to cin
    while (!(cin >> dUserInput))
    {
        cin.clear();
        cin.ignore(99999, '\n');
        cout << "You did not enter a number, please try again: ";
    }

    cout << "Number entered"; //for debugging purposes
    return dUserInput;
}