Захват нажатия клавиш в C ++
-
26-09-2019 - |
Вопрос
Я делаю некоторое чтение, и я вижу, что я могу использовать GETCH (), чтобы получить ключ. Яснил, что это считается плохой практикой, однако я видел противоречивые мнения. Я пишу приложение консоли для моего класса, и хотел бы иметь возможность перемещать маркер (*) вокруг экрана на основе нажатия клавиш со стрелками. Является ли GETCH () правильный путь, чтобы пойти об этом, или есть лучший метод для его захвата. Я хочу, чтобы они просто могли толкнуть стрелу, не нужно нажать ввод или что-нибудь. Мне не нужен код конкретно, я просто хочу знать, если я должен избежать getch (), и если да, то какие функции есть для этого типа идеи.
Решение
getch()
не является стандартной функцией в C или C ++. Он находится в некоторых устаревших компиляторах, таких как Турбо C. и это также определено в определенных обычно используемых библиотеках, таких как проклятия, но в любом случае это функция C, а не C ++. Для C ++ вы, вероятно, должны просто придерживаться стандартного C ++ ввода / вывода. Если вы не можете сделать это по некоторым причинам, то отправляйтесь на самый портативный вариант, например, проклятия.
Другие советы
Вы хотите прочитать от терминала в ненаническом режиме. Используйте TCSetattr (), чтобы отключить флаг ICANON.
Используйте GETCH (), если это работает. Почему бы нет?
В Windows вы можете использовать PDCurses: http://pdcurses.sourceforge.net/, что совместимо с NCurses.