我已经尝试过在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/