C++ cin读取字符串到int类型返回0

Rob*_*cha 4 c++

#include <iostream>
using namespace std;
int main()
{
    cout << "Please enter your name and age\n";
    string first_name;
    int age;
    cin >> first_name;
    cin >> age;
    cout << "Hello, " << first_name << " (age " << age << ")!\n";
}
Run Code Online (Sandbox Code Playgroud)

如果我输入Carlosage或任何其他字符串,我收到了0.这是如何工作的(为什么)?

M.M*_*M.M 9

不知道为什么这个问题得到了落实/关闭,因为它已经明确说明而且不广泛(从评论来看,很多人都不知道答案)......

无论如何,对于代码:

int age;
cin >> age;
Run Code Online (Sandbox Code Playgroud)

如果输入流不包含任何数字,则流将进入失败状态并age设置为0.输入流中的字符保留在那里; 清除故障状态后,可以通过将来的读操作读取它们.

在cppreferenceoperator>>总结了行为, 标准中的完整描述有些复杂.

注意:这在C++ 11中有所改变; 报告垃圾输出的评论员要么是在C++ 11之前的模式下运行编译器,要么是有问题的编译器.