Я работаю над текстовой игрой и хочу, чтобы игрок выбирал одиночный или многопользовательский режим. У меня есть следующие проверки в моем коде:Почему мой cout печатает дважды?
cout << "Welcome to Hangman!\nIs this a [s]ingle or [m]ultiplayer game?\nGame mode: ";
int type = cin.get();
cin.clear();
//While input isn't single character s or m (either case)
while (type != 115 && type != 109 && type != 83 && type != 77) {
cout << endl << "Please try again.\nGame mode: ";
cin.clear();
type = cin.get();
}
Что происходит, если игрок дает неверный ввод «Пожалуйста, повторите попытку режима игры:» печатает в два раза, но если игрок просто попадает ввести печатает один раз. Я начинаю с C++ и читаю, что cin.clear() иногда исправляет эту проблему, но до сих пор ничего не работало.
'type', вероятно, новый символ линии () в другое время. –
Dialecticus
'cin.clear()' только очищает флаги ошибок. По-прежнему существует '\ n' от нажатия ввода в потоке. – dyp
Кроме того, почему бы вам не использовать символьные литералы для сравнения с типом? Например. 'type == 's'' – dyp