如何使用cin.fail()编写函数以确保在main中有效输入?

时间:2013-05-04 20:07:02

标签: c++ function validation

部分要求是函数不应该带任何参数。 但问题是我在哪里可以存储cin输入?我在这里得到了一个无限循环。

double getValidDouble(){
    string invalid_input;
    while (cin.fail()){
        cout << "You entered a value of the wrong type!" << endl;
        getline(cin,invalid_input);
        cout << "Enter a double this time: " << endl;  
    }
}

1 个答案:

答案 0 :(得分:0)

也许我没有完全关注,但为什么不只是声明一个局部变量并将其返回?

double getValidDouble(){
    string invalid_input;
    double val;
    cin >> val;
    while (cin.fail()){
        cout << "You entered a value of the wrong type!" << endl;
        cin.clear();
        getline(cin,invalid_input);
        cout << "Enter a double this time: " << endl;  
        cin >> val;
    }
    return val;
}

无限循环可能是由于你在错误之后没有做cin.clear()