Лишние символы в 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');
}
→ Ссылка