我需要下面的程序获取用户输入的整行并将其放入字符串names中:
cout << "Enter the number: ";
int number;
cin >> number;
cout << "Enter names: ";
string names;
getline(cin, names);
在getline()
命令之前使用cin >> number
命令(我猜这就是问题所在),它将不允许我输入名称。为什么?
我听说过cin.clear()
命令,但我不知道它的作用是什么,也不知道为什么需要使用它。
5<Enter>John<Enter>
。然后,cin >> number
只读取了数字 5,而将换行符(Enter)留在流中。因此,当尝试使用getline(cin,name)
读取名称时,它会一直读到行末。但请注意,这里有一个换行符准备好被读取(因此名称将为空(因为您没有在读取数字 5 后读取掉换行符)。如果您想在 >> 和 getline() 之间切换,则需要小心处理输入的末尾换行符。 - Martin York