cin.игнорируйте (), если там были символы

#c #cin

Вопрос:

У меня есть 2 игрока в 2 терминалах. когда наступает очередь игрока 1, он вводит символ, и все в порядке. но когда наступает очередь игрока 2, если игрок 1 вводит символ перед своим ходом, в этом случае, когда наступает его очередь, этот символ вводится автоматически. если я использую cin.ignore(), если игрок 1 не думает и не вводит символ, когда не его очередь, он должен ввести символ 2 раза ( 1 раз игнорировать и 1 раз вводить ), и это плохо. Я хочу написать код, который игнорирует символ, если символ (или 2 или более символов) был в терминале раньше. и если бы не было символа, не игнорируйте. Я поднял изображение, на котором изображен символ, автоматически введенный для игрока 1, потому что он ввел «а» перед своим ходом. (на этой картинке есть немного кода) введите описание изображения здесь

Ответ №1:

Прочитайте полную строку ввода. Возьмите только первый символ, остальные игнорируйте.

Что-то вроде:

 std::string input;
std::getline( std::cin, input );
char move = input[0];
 

Этот код, очевидно, не проверяет ошибки, поэтому вы можете добавить это.

Комментарии:

1. Когда настанет очередь playe2, возможно, игрок 1 введет 20 строк строки. Когда настанет очередь игрока 1, я хочу проигнорировать все и получить нового персонажа от игрока 1.