cin.fail()没有返回true

问题描述 投票:-2回答:1

我不确定我是否正确理解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
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.