Как сделать чтобы консоль сразу считывала клавишу без нажатия enter?

98
03 июля 2021, 11:30

У меня есть такой кусочек кода. Пробовала getch(), но почему-то выходило 48+то число которое я нажала(если нажимаю 1 то выходит 49 и тд

 cout << "1 - go right" << endl
         << "2 - go left" << endl
         << "3 - fly" << endl
         << "4 - down" << endl
         << "5 - exit" << endl;
Answer 1

Потому что это скан коды клавиатуры, и 49 это и есть скан код для 1, подробнее можно посмотреть тут, там в главе IBM PC Extended ASCII Display Characters есть раскладка для Win, а таблица Converting Hex to Decimal поможет перевести коды

Answer 2

А консоль в принципе не предназначена для получения клавиатурного ввода. Ввод всегда идет "как будто из текстового файла".

Некоторые терминальные клиенты по нажатию клавиш записывают в файловый дескриптор стандартного ввода некоторые контрольные последовательности, например ansi-escape-sequences, Console Virtual Terminal Sequences. Их можно вычитывать (как текст) и интерпретировать.

READ ALSO
Удаление элемента в стеке c++ [закрыт]

Удаление элемента в стеке c++ [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

91
Передать в type file объекты

Передать в type file объекты

Имеется такой код:

81
Не работает viewport

Не работает viewport

Почему на смартфонах при открытии страница чуть больше и приходится уменьшать? Если для body min-width: 320px все норм, но я хочу, чтобы минимальная...

115
Правильное использование DI и IoC

Правильное использование DI и IoC

Начал изучать принципы DI и работу с IoC контейнерамиВопрос следующего характера: Пусть у меня есть некая библиотека классов MyClassLibrary, там представлены...

312