Таким образом, вы используете cin
для извлечения одного символа, а в буфере все еще есть мусор, потому что ваш пользователь ввел бессмыслицу.
Чтобы избавиться от этого, используйте cin.ignore()
.cin.ignore()
принимает 2 параметра - целое число для количества игнорируемых символов и разделитель, который в основном очищает буфер, если он достигает этого символа.
Возможно, вы захотите cin.ignore(<A REALLY BIG NUMBER>, '\n');
, чтобы буфер очищалсяна очень долгий путь или пока он не достигнет возвращаемого символа, в зависимости от того, что произойдет раньше.
Вместо использования жестко запрограммированного большого числа, вы можете пойти и извлечь максимальный размер буфера следующим образом:
//include this with your other #includes
#include <limits>
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');