цикл выхода c ++ на основе ввода с клавиатуры - PullRequest
1 голос
/ 30 марта 2009

Можно ли выйти из цикла C ++ на основе ввода с клавиатуры без необходимости вводить что-либо на каждой итерации?

Например

while(checkkeyboardinput != 'q')
   {
     do work
   }

Я чувствую, что это очень легко, но Google не помогает мне, и я не могу вспомнить, как это сделать. Спасибо за помощь.

РЕДАКТИРОВАТЬ: я использую VS2008

Ответы [ 3 ]

4 голосов
/ 30 марта 2009

Попробуйте _kbhit (). Насколько я знаю, он проверяет, есть ли какой-либо ввод с клавиатуры в буфере.

http://msdn.microsoft.com/en-us/library/58w7c94c%28VS.80%29.aspx

_kbhit

Проверяет консоль на ввод с клавиатуры.

int _kbhit (void);

Возвращаемое значение

_kbhit возвращает ненулевое значение, если была нажата клавиша. В противном случае это возвращает 0.

Примечания

Функция _kbhit проверяет консоль для недавнего нажатия клавиши. Если функция возвращает ненулевое значение, нажатие клавиши ожидает в буфере. Затем программа может вызвать _getch или _getche, чтобы получить нажатие клавиши.

3 голосов
/ 30 марта 2009

Если вы используете ncurses, вы можете очень легко набрать getch(). Однако не существует стандартного способа делать то, что вы хотите.

1 голос
/ 30 марта 2009

Вы забыли упомянуть, какую ОС вы используете. Получение ввода с клавиатуры зависит от ОС (даже от библиотеки - например, как это сделать с GTK, очевидно, зависит от GTK).

Ну, GTK работает на нескольких ОС, так что ... но вы поняли идею. Чтобы получить разумный ответ, вам нужно немного больше рассказать об окружающей среде, в которой вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...