我从Stroustrup的Programming: Principles and Practice Using C++开始,我遇到了第一个问题。长话短说,假设我们有以下代码:
int main() {
cout << "Enter your first name and age:\n";
string first_name = "???";
int age = -1;
cin >> first_name >> age;
cout << "Hello, " << first_name << " (age " << age << ")\n";
}
在本书之后输入22 Carlos
应输出:
Hello, 22 (age -1)
但我明白了:
Hello, 22 (age 0)
我不知道出了什么问题。任何想法或指针?
答案 0 :(得分:6)
这是point of difference between C++03 and C++11:
注释
在C ++ 98 / C ++ 03中,如果发生错误,
v
保持不变。在C ++ 11中,它被设置为如上所述的值。
在C ++ 11中,如果未能提取int
目标设置为0
。
请注意,即使您的编译器设置为C ++ 03模式,它仍然可能表现出C ++ 11行为,例如,如果其标准库不愿意采用C ++ 03模式中的旧行为。