我不确定我是否正确理解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)。我不知道为什么。任何帮助将不胜感激。
答案 0 :(得分:3)
流尚未失败。
当>>
读入一个整数时,一旦发现一个不能在整数中的字符,它将停止。对于"55.687"
,这是'.'
字符。因此cin >> number
将55
读入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