istream类重载了抽取运算符<< ,>>, 所以cin >> 支持c++内置的所有基本数据类型。cin对象将标准输入表示为字节流,然后根据抽取 运算符<<(本质就是一个函数)的参数类型对字节流进行类型转换,转换为所需的类型。
不同版本的抽取运算符查看输入流的方法是相同 的。如果输入的前面一部分字符为空白(空格、换行符、和制表符),他们会跳过,直到遇到非空白字符。当输入没有满足程序期望的时候,比如对于一个int类型的变量a,却输入字符H,这种情况下,抽取运算发将不会改变变量a的值,并返回0,经常被放在循环条件中来终止循环。
测试代码如下:
运行效果如图:
由于输入被缓冲。因此通过键盘输入的第二行在用户按下回车键之前,不会被发送给程序。然而循环在字符z处停止了对输入的处理,因为z不予int类型相匹配。输入与预期格式不匹配反过来将导致表达式cin>>input的返回值为false,因此while循环被终止。