我在C++中创建了一个简单的控制台应用程序,该应用程序从用户处获取字符串和字符输入。为了简单起见,我想使用字符串和char数据类型将输入从cin传递给。C++ iostream:使用cin >> var和getline(cin,var)输入错误
要获得字符串输入,我使用的是函数getline方法:
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
要获得字符输入,我使用的是CIN >> VAR方法:
char var;
cin >> var;
这在大部分情况下工作正常。但是,当我使用getline输入字符串时,它会忽略我的字符串的第一个字符。
是否有可能使用函数getline和CIN >>,而不必使用忽略的方法,或者我可以打电话,以确保我的第一个字符是不是跳过?
这是一个代码全样本,我同时使用函数getline和CIN >>:
string firstName;
string lastName;
char gender = 'A';
cout << "First Name: ";
cin.ignore();
getline(cin, firstName);
cout << "Last Name: ";
cin.ignore();
getline(cin, lastName);
while(genderChar != 'M' && genderChar != 'F')
{
cout << "Gender (M/F): ";
cin >> genderChar;
genderChar = toupper(genderChar);
}
我不明白你对cin.ignore()的评论。根据它的api定义,它将放弃你输入的字符串的第一个字符,就像你现在遇到的场景一样。 –
@JinChen抱歉,修正。我的意思是说,如果我不使用ignore(),它会跳过一行输入。 – miguelarcilla
仍然很奇怪,cin.ignore()不应该像那样行为。你能提供更多的问题代码吗? –