C ++ iostream: Używanie błędów wejściowych cin >> var i getline (cin, var)
Tworzę prostą aplikację konsolową w C ++, która pobiera ciągi znaków i znaki wejściowe od użytkownika. Aby to było proste, chciałbym użyćstrunowy izwęglać typy danych do przekazania danych wejściowych z cin do.
Aby uzyskać wejścia ciągów, używamgetline metoda:
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
Aby uzyskać wejścia znakowe, używamcin >> var metoda:
char var;
cin >> var;
W większości przypadków działa to dobrze. Jednak gdy wprowadzam ciąg używającgetline, ignoruje pierwszy znak mojego ciągu.
Czy możliwe jest użyciegetline icin >> bez konieczności używaniaignorowaćlub metodę, którą mogę wywołać, aby upewnić się, że moja pierwsza postać nie zostanie pominięta?
To jest pełna próbka kodu, w której używam obugetline icin >>:
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);
}