getline(cin,STRING)正在阅读一个空间

时间:2017-11-01 00:01:34

标签: c++ readline cin

我有一个函数,它应该只是简单地读入一行文本,但无论出于何种原因,它只读取一个空格。我尝试将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;
}

有人看到我的错误吗?

1 个答案:

答案 0 :(得分:1)

不是错误。您似乎之前已经完成了cin>>操作。 cin>>只会从流中获取字符串,并留下\n后面的getline()可能会接收,并且您知道其默认值分隔符\n,所以它只是跳过输入。

<强>解决方案 ---&GT;在每次cin.ignore()操作之前使用getline ()来清除任何流浪\n的输入流。

您的来电可以是:

std::cin.ignore ();
std::getline (cin, restToAdd);

代替:

std::getline (cin,restToAdd);