这个问题在这里已有答案:
我有一个控制台应用程序,shopuld等待用户输入一个字符串 . 它必须是getline,因为它可能包含空格 . 但它不会等待输入,它会跳过它并运行函数 . 这是我的代码:
int main()
{
vector<person> people;
bool flag = true;
int num_people = 0;
//char*filename="names.txt";
people = read_file();
while(flag)
{
int sel = 0;
string args;
cout << "1 - Sök del av personnamn" << "\n"
<< "2 - Sök städer" << "\n" << "3 - Avsluta" << endl;
cin >> sel;
if(sel == 1)
{
cout << "Mata in delen av personnamnet" << endl;
getline(cin, args);
print_result(find_in_names(people, args));
}
else if(sel == 2)
{
cout << "Mata in staden" << endl;
getline(cin, args);
args = lower_letters(args);
print_result(find_person_from_city(people, args));
}
else if(sel==3)
{
flag=false;
}
else
{
cout << "FEL, TRYCK OM!" << endl;
}
}
}
运行没有错误,它只是跳过getline并且不让用户输入任何内容 .
1 回答
以下是使用
getline()
函数的简单方法:不要忘记它,如果你使用
cin
beforgetline()
,你必须把这行:所以你的代码应该是这样的:
这是一些文档http://www.cplusplus.com/reference/istream/istream/ignore/,希望它会有所帮助;