Один раз для q
, один раз для w
, один раз для e
.
Проверьте документы на std::basic_istream::ignore
. Без параметра пропускается только один символ, поэтому ваш цикл будет проходить через каждый символ один раз, прежде чем он снова примет новый ввод.
Вы хотите, чтобы std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
игнорировал каждый символ до следующей строки.