Лишние символы/байты в строке, полученной черз std::getline

Подскажите пожалуйста: Моя программа считывает ввод пользователя с помощью std::getline(std::cin, cmd). Запустив программу, я просто нажимаю одну из клавиш со стрелками, а затем Enter. При этом у меня cmd.size() равен 3, если клавишу со стрелкой нажать 2 раза - cmd.size() равен 6, и т.д.

Как сделать так чтобы в cmd попадала итоговая введенная строка без следов её изменения в процессе ввода?

Вот весь код:

#include <iostream>
#include <string>

int main() {
    std::string cmd{};
  while(true) {
      std::getline(std::cin, cmd);
      if (std::cin.rdstate() != std::ios_base::goodbit)
      {
          std::cin.clear();
          cmd = "";
          continue;
      }
  
      if(cmd.size() == 0)
              continue;
      if(cmd == "exit")
      {
          break;
      }

      std::cout << std::to_string(cmd.size()) << std::endl;
  }
}

Ответы (0 шт):