我认为,如果cin
进入错误状态,它流入的变量将保持不变。但是,以下似乎是一个反例:
#include <iostream>
using namespace std;
int main()
{
cout << "Enter int: ";
int i = 5;
cin >> i;
if(cin.fail()) cout << "failed \n";
cout << "You entered: " << i << "\n";
}
运行:
Enter int: g
failed
You entered: 0
我去哪儿哦错了?
答案 0 :(得分:1)
C ++ 11中的行为发生了变化。现在,失败的整数提取将变量设置为0。
即使没有-std=c++11
标志,GCC 4.8也会展示新行为,这可能是库的错误/限制。只有一个libstdc ++,它不知道用于编译main
的编译器标志。