首页 > 解决方案 > cin.fail() 不返回真

问题描述

我不确定我是否正确理解 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)。我不确定为什么。任何帮助将不胜感激。

标签: c++cin

解决方案


流尚未失败。

>>读入一个整数时,它会在找到一个不能在整数中的字符时立即停止。在 的情况下"55.687",这就是'.'字符。因此cin >> number55number,并将剩余部分".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


推荐阅读