3.3 输入和类型
输入操作>>(“get from”)是对类型敏感的, 它读取的值与变量类型需要一致。例如:
因此, 如果你输入Carlos 22, >>操作符将Carlos读入first_name, 将22读入age, 并且生成这个输出:
为什么它不将Carlos 22(全部)读入first_name?这是由于按照规定, 字符串的读取会被空白符所终止, 包括空格、 换行和tab字符。否则, 空白符在默认情况下会被>>忽略。例如, 你可以在读取的数字之前添加任意多的空格, >>将会跳过它们并读取这个数字。
如果你输入22 Carlos, 你将看到奇怪的东西, 直到你能够理解这一切。22将会读入first_name, 这是由于22毕竟是一串字符。另一方面, Carlos并不是一个整数, 因此它不会被读取。这时的输出将是22和一些随机数, 例如-96739或0。为什么?因为你没有给age赋一个初始值, 并且没能成功地读取一个值存入它。因此, 当你开始执行时, 就会得到内存中的某个部分的“垃圾值”。在10.6节中, 我们讨论“输入格式错误”的处理方式。现在, 我们只是初始化age, 这样在输入错误时, 我们会获得一个可预测的值:
现在, 输入22 Carlos将会输出:
注意, 我们可以在一个输入语句中读取几个值, 就像我们可以在一个输出语句中写入几个值一样。注意, <<和>>都是对类型敏感的, 因此我们可以输出int型变量age和字符文字′\n′, 以及string型变量first_name和字符串文字"Hello,"、"(age"和")\n"。
使用>>读取的String(默认情况下)会被空格所终止, 也就是说,它只能读取一个字。但是, 我们有时需要读取多个字。当然会有多种方法来解决这个问题。例如, 我们可以像这样来读取一个包括两个字的名字: