Я создаю простое консольное приложение на C++, которое получает от пользователя строковые и char-данные. Чтобы все было просто, я хотел бы использовать строку и char типы данных для ввода ввода cin to.C++ iostream: Использование ошибок cin >> var и getline (cin, var)
Чтобы получить строку входа, я использую 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 и CIN >> без использования игнорировать, или метод, который я могу назвать, чтобы убедиться, что мой первый символ не пропустил?
Это полный пример кода, где я использую как GetLine и CIN >>:
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);
}
Я не понимаю, ваши комментарии для cin.ignore(). Основываясь на своем определении api, он отбрасывает первый символ введенной строки, как и сценарий, с которым вы сталкиваетесь сейчас. –
@JinChen извините, исправленный. Я хотел сказать, что если я НЕ использую ignore(), он пропускает строку ввода. – miguelarcilla
все еще странно, cin.ignore() не должен вести себя так. Можете ли вы предоставить больше кода вашей проблемы? –