我从Stroustrup的编程:使用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";
}
Run Code Online (Sandbox Code Playgroud)
在本书之后输入22 Carlos应该输出:
Hello, 22 (age -1)
Run Code Online (Sandbox Code Playgroud)
但我得到:
Hello, 22 (age 0)
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题.任何想法或指针?
这是C++ 03和C++ 11之间的一个区别点:
笔记
在C++ 98/C++ 03中,如果发生错误,
v则保持不变.在C++ 11中,它被设置为如上所述的值.
在C++ 11中,无法提取int目标设置为0.
请注意,即使您的编译器设置为C++ 03模式,它仍然可能表现出C++ 11行为,例如,如果其标准库不愿意采用C++ 03模式中的旧行为.