现在有一个从控制台读取输入的小程序:
1 #include "../std_lib_facilities.h" 2 3 int main() { 4 5 cout << "Please enter your first name and age\n"; 6 string first_name; 7 int age; 8 cin >> first_name; 9 cin >> age; 10 cout << "Hello, " << first_name << " (age " << age << ")\n"; 11 12 return 0; 13 }
如果你输入了"Carlos 22",>>操作符会将Carlos读入first_name,将22读入age。为什么它不将"Carlos 22"全部读入first_name呢?这是由于按照规定,读取字符串会被空白符所终止,包括空格、换行和tab字符。除此之外,空格会在缺省的情况下被>>忽略。如果你输入的是"22 Carlos",你将会看到奇怪的东西。22按照字符串进行读取,但是Carlo因为不是一个整数,因此它不会被读取,age没有被赋一个初始值,而是内存中的一个垃圾值。<<和>>都是对类型敏感的。
关于用C++中从控制台读取带空格的字符串可以自行查找。