不要等待getline C++
Wont wait for getline C++
我有一个控制台应用程序,它将等待用户输入字符串。它必须是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,不让用户输入任何内容。
这里有一个使用getline()
函数的简单方法:
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string name;
int age;
cout << "How old are you ?" << endl;
cin >> age;
cin.ignore(); // for avoiding trouble with 'name' when we're gonne use getline()
cout << "What's your name ?" << endl;
getline(cin, name);
system("PAUSE");
}
别忘了,如果你在getline()
之前使用cin
,你必须放一行:
cin.ignore();
所以你的代码应该看起来像这样:
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;
cin.ignore()
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;
}
}
}
这是一些医生http://www.cplusplus.com/reference/istream/istream/ignore/,希望它能有所帮助;
相关文章:
- Seg Fault Issue C++ (file IO / getline)
- 当用户键入分隔符时,停止getline()输入
- getline() 的原型/库是什么;
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 如何在 c++ 中使用 ',' 作为 getline 分隔符
- 错误:调用'getline'没有匹配函数
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 将 getline() 与文件一起使用
- 我有三个 getline,但是一旦编译,输入就太多了
- 在 std::getline 和 std::cin 期间卡在循环中
- 为什么 getline() 不读取文本文件中的所有内容?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- std::getline没有在while循环中重新请求用户输入
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- Getline(cin,str)的奇怪输出
- 我在C++中使用 getline() 函数时遇到问题
- 而循环跳过 cin.getline() 对于 C 字符串
- 如何在 getline 中删除/忽略超过特定数字的字符?
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)