Лишние символы в char
Пишу программу, которая должна принимать user input и обрабатывать его.
Но возникли проблемы, когда ввожу в переменную char 11+ символов — она перегружает ввод, как я понимаю, в следствие чего, я не могу ввести символы в str1. Если убрать cin.clear(), то я и в str2 не могу ввести что-либо.
Как решить эту проблему?
string str1, str2;
char ch[11];
cout << "Please write some characters (1 - 10)." << endl << "> ";
cin.getline(ch, sizeof(ch)); //enter any characters
cin.clear();
cout << "Please, enter any text." << endl << "> ";
getline(cin, str1); //enter 1st string
cin.clear();
cout << "Please, enter any text one more time." << endl << "> ";
getline(cin, str2); //enter 2nd string
cin.clear();
Ответы (1 шт):
Автор решения: Genjutsu
→ Ссылка
Проверяйте falibit и пропускайте лишние символы. Или используйте std::string.
cin.getline(ch, sizeof(ch));
if (cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}