C ++ iostream: использование ошибок ввода cin >> var и getline (cin, var)
Я создаю простое консольное приложение на C ++, которое получает строки и символы от пользователя. Для простоты я хотел бы использоватьстрока а такжеголец типы данных для передачи ввода из CIN в.
Чтобы получить строковые входы, я использую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 а такжеКин >> без использованияигнорироватьили метод, который я могу вызвать, чтобы убедиться, что мой первый персонаж не пропущен?
Это полный пример кода, где я использую обаGetLine а такжеКин >>:
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);
}