getline(cin, STRING) 正在读取 space

getline(cin, STRING) is reading a space

我有一个函数,它应该非常简单地读取一行文本,但出于某种原因,它只读取 space。我尝试将 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;
}

有人看到我的错误吗?

那是不是错误。看来你之前做了一个cin>>的操作。 cin>> 仅从流 中获取 字符串并留下 \ngetline() 可能会拾取它,如您所知,它的 默认分隔符\n,所以它只是跳过输入。

解决方案--->在每个getline ()操作之前使用cin.ignore()来清除任何杂散的输入流\n.

您的电话可以是:

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

而不是:

std::getline (cin,restToAdd);