我已经尝试过在Internet上找到解决方案,但是我不能仅仅根据自己的情况找到它。

在此函数中,当我调用getline(cin,line)时,程序不会停止插入该值。例如,如果我更改为cin >> line,则一切正常。

void AddPeople(vector <People*> people_list)
{
    system("CLS");
    string line;
    string first_name, second_name, third_name;
    string delimiter = " ";
    size_t pos = 0;
    string token;
    int i=0;

    cout << "MENU::Add name" << endl;
    cout << "Name: ";
    getline(cin, line);

    while ((pos = line.find(delimiter)) != string::npos)
    {
        token = line.substr(0, pos);
        line.erase(0, pos + delimiter.length());
        i++;
        if(i==1)
        {
            first_name=token;
        }
        else if (i=2)
        {
            second_name=token;
            third_name=line;
        }
    }

    people_list.push_back(new People(first_name, second_name, third_name));
}

最佳答案

当给定和行尾字符时,getline()的行为有趣。

程序:

int x;
std::cin>>x;
std::string a;
std::getline(std::cin, a);


给定输入"42\na\n"时,它将在x""中读入42,因为'2''\n'之间有0个字符。当std::getline中没有任何内容时,可以通过循环调用a来解决此问题。

关于c++ - 程序不会在“getline”中停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22967638/

10-13 08:16