Захват нажатия клавиш в C ++ - PullRequest
2 голосов
/ 18 ноября 2010

Я немного читал и вижу, что могу использовать getch (), чтобы получить нажатие клавиши.Я видел, что это считается плохой практикой, однако я видел противоречивые мнения.Я пишу консольное приложение для своего класса и хотел бы иметь возможность перемещать маркер (*) по экрану на основе нажатия клавиш со стрелками.Является ли getch () правильным способом для этого, или есть лучший способ перехватить это.Я хочу, чтобы они могли нажимать стрелку, а не нажимать ввод или что-то еще.Мне не нужен конкретно код, я просто хочу знать, должен ли я избегать getch (), и если да, какие функции существуют для этого типа идеи.

Ответы [ 4 ]

1 голос
/ 19 ноября 2010

Вы хотите читать с терминала в неканоническом режиме.Используйте tcsetattr (), чтобы отключить флаг ICANON.

1 голос
/ 19 ноября 2010

getch() не является стандартной функцией в C или C ++. Он встречается в некоторых устаревших компиляторах, таких как Turbo C , и также определяется в некоторых обычно используемых библиотеках, таких как curses , но в любом случае это функция C, а не C ++. Для C ++ вам, вероятно, следует просто придерживаться стандартного ввода-вывода C ++. Если по какой-то причине вы не можете этого сделать, выберите наиболее переносимый вариант, например, проклинает.

0 голосов
/ 19 ноября 2010

В Windows вы можете использовать pdcurses: http://pdcurses.sourceforge.net/,, совместимый с ncurses.

0 голосов
/ 19 ноября 2010

Используйте getch (), если это работает.Почему нет?

...