代码之家  ›  专栏  ›  技术社区  ›  Taylor Barton

getline(cin,STRING)正在读取空格

  •  -2
  • Taylor Barton  · 技术社区  · 7 年前

    我有一个函数,它应该非常简单地读取一行文本,但无论出于何种原因,它只读取一个空格。我尝试将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 回复  |  直到 7 年前
        1
  •  2
  •   Pang Ajmal PraveeN    7 年前

    那就是 不是一个错误 . 看来你做了一个 cin>> 操作更早。 只需要 流中的字符串 留下了 \n ,其中 getline() ,可能会出现,正如你所知 默认分隔符 ,因此它只是跳过输入。

    解决方案 ---&燃气轮机;使用 cin.ignore() 在每之前 getline () 清除任何杂散输入流的操作 \n .

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

    而不是:

    std::getline (cin,restToAdd);