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);
}

Ответы на вопрос(4)

Ваш ответ на вопрос