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)
原因是什么?
在本书中描述的行为在C ++ 11之前是正确的。在此之前,如果提取失败,则仅设置故障位。该值本身保持不变。
但是,自C ++ 11起,除设置了故障位外,该值现在设置为零。有关更多信息,请参见std :: istream :: operator >>上的此参考页。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句