输入和类型问题

And*_*rej 2 c++

我从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)

我不知道出了什么问题.任何想法或指针?

eca*_*mur 6

这是C++ 03和C++ 11之间的一个区别点:

笔记

在C++ 98/C++ 03中,如果发生错误,v则保持不变.在C++ 11中,它被设置为如上所述的值.

在C++ 11中,无法提取int目标设置为0.

请注意,即使您的编译器设置为C++ 03模式,它仍然可能表现出C++ 11行为,例如,如果其标准库不愿意采用C++ 03模式中的旧行为.