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