C ++ iostream: Utilizando os erros de entrada cin >> var e getline (cin, var)

Eu estou criando um aplicativo de console simples em C ++ que recebe entradas de caracteres e caracteres do usuário. Para simplificar, gostaria de usar ocorda eCaracteres tipos de dados para passar a entrada de cin para.

Para obter entradas de string, estou usando oObter linha método:

string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);

Para obter entradas de char, eu estou usando ocin >> var método:

char var;
cin >> var;

Isso funciona bem na maior parte. No entanto, quando eu insiro uma string usandoObter linha, ignora o primeiro caractere da minha string.

É possível usarObter linha ecin >> sem ter que usarignorarou um método que posso chamar para garantir que meu primeiro caractere não seja ignorado?

Esta é uma amostra completa de código onde eu uso os doisObter linha ecin >>:

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

questionAnswers(4)

yourAnswerToTheQuestion