cin.fail() 不返回 true

cin.fail() not returning true

我不确定我是否理解 cin.fail() 正确。当用户不输入整数时,我试图将其设置为 return 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() 的 returns 0(false)。我不确定为什么。任何帮助将不胜感激。

流尚未失败。

>>读入整数时,一发现不能在整数中的字符就停止。在 "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