2010-11-18 2 views
2

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

+2

Какая операционная система? –

ответ

1

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

+0

Есть ли стандартный способ C++ для захвата нажатий клавиш, поскольку они набраны, или C++ всегда нужен вход для буферизации? – Bear

+0

@bear: нет такого способа в стандарте C++ – smerlin

+0

Я думаю, что любое решение будет либо предназначено для ОС, либо потребует библиотеки, такой как проклятия или ncurses. –

1

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

+0

что я искал благодарности! –

0

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

Смежные вопросы