2011-01-27 5 views
2

Я пишу простую программу командной строки в C++ (windows). Одна из функций заключается в проверке ввода с клавиатуры и при нажатии определенной клавиши, выйдите из программы.Как предотвратить выход консоли после выхода из программы

На самом деле он отлично работает до сих пор, однако, когда программа выходит, я получаю всю нажатую клавишу на выходе из командной строки? Есть ли способ избежать такого поведения?

Заранее спасибо ...

+0

на самом деле я хочу сделать это в стандартном C++ или по крайней мере с WIN32 API, поэтому Геч не подходит, я думаю. –

ответ

0

Используйте _kbhit(), чтобы проверить, нажата ли клавиша. и когда используется значение _getch(), чтобы получить значение. (Обратите внимание на _getch() может вернуться 0 или 0xE0 для специальных клавиш и вызвать _getch() снова для этого значения)

+1

ОК, я полагаю, что нет никакого способа сделать это «родным» способом со стандартным C/C++. То, как вы его предлагали, работает отлично. Большое спасибо. –

3

getch не имеет эха, то есть он не печатает символ, который вы вводите. Вот еще информация о всех гольцов получить функции в C/C++:

http://www.daniweb.com/forums/thread37195.html

0

Это зависит от того, как вы проверяете для ввода с клавиатуры.

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

+0

Я использую GetAsyncKeyState, так что, возможно, вы правы? Вы можете что-то предложить? Thx –

+0

Как вы знаете, на входе есть что-то, вы можете использовать 'char c; std :: cin >> c; ' –

+0

Да, это правда, однако он все равно производит вывод на терминал. Кроме того, он всегда ждет ключ RETURN, без него он даже не выходит из прога. –

0

Вы можете использовать getch(), который должен не повторять символ. Я не могу вспомнить заголовок, в котором он определен, но я думаю, что это был conio.h (помните, что это не стандартный заголовок)