cin.fail()不返回true

时间:2018-09-04 23:31:27

标签: c++ cin

我不确定我是否正确理解cin.fail()。我试图让它在用户不输入整数时返回true。

#include <iostream>
using namespace std;

int main() {
    int number;

    cout << "Please enter a positive integer: ";
    cin >> number;
    cout << cin.fail();

    return 0;
}

无论何时我输入非整数(如55.687),它都会为cin.fail()返回0(false)。我不知道为什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

流尚未失败。

>>读入一个整数时,一旦发现一个不能在整数中的字符,它将停止。对于"55.687",这是'.'字符。因此cin >> number55读入number,而".687"保留在流中以供将来阅读。

提供相同的输入

int main() {
    int number;

    cout << "Please enter a positive integer: ";
    cin >> number;
    cin >> number;
    cout << cin.fail();

    return 0;
}

第二个cin >> number将失败,因为无法将'.'解析为int。示例:https://ideone.com/iB3aNk