我有一个函数,它应该只是简单地读入一行文本,但无论出于何种原因,它只读取一个空格。我尝试将readline更改为cin>>线,这工作。但是readline(cin,string)没有。
void AddRestaurant() {
string restToAdd;
cout << "What is the name of the restaurant you want to add?" << endl;
getline(cin, restToAdd);
restuarants.push_back(restToAdd);
cout << restToAdd + " has been added" << endl << endl;
}
有人看到我的错误吗?
答案 0 :(得分:1)
不是错误。您似乎之前已经完成了cin>>
操作。 cin>>
只会从流中获取字符串,并留下\n
后面的getline()
可能会接收,并且您知道其默认值分隔符是\n
,所以它只是跳过输入。
<强>解决方案强> ---&GT;在每次cin.ignore()
操作之前使用getline ()
来清除任何流浪\n
的输入流。
您的来电可以是:
std::cin.ignore ();
std::getline (cin, restToAdd);
代替:
std::getline (cin,restToAdd);