我正在用 C++ 创建一个简单的控制台应用程序,它从用户那里获取字符串和字符输入。为简单起见,我想使用string和char数据类型将输入从 cin 传递到。
要获取字符串输入,我使用getline方法:
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
要获取 char 输入,我使用cin >> var方法:
char var;
cin >> var;
这在大多数情况下都可以正常工作。但是,当我使用getline输入字符串时,它会忽略字符串的第一个字符。
是否可以使用getline和cin >>而不必使用ignore,或者我可以调用一种方法来确保我的第一个字符不会被跳过?
这是我同时使用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);
}