int main()
{
cout << "Please enter your first name and age\n";
string first_name = "???";
int age = -1;
cin >> first_name >> age;
cout << "Hello, " << first_name << " (age " << age << ")\n";
}
根据《 使用C ++编程原理和实践》第二版(作者:Bjarne Stroustrup),当我提供输入信息时
22 Carlos
预期输出应为:
22(age -1)
但是当我运行它时,我得到:
22(age 0)
是什么原因?
答案 0 :(得分:5)
您的书中描述的行为在C ++ 11之前是正确的。在此之前,如果提取失败,则仅设置故障位。该值本身保持不变。
但是,自C ++ 11起,该值现在设置为零,此外还设置了故障位。有关更多信息,请参见this reference page on std::istream::operator>>。