Страницы

Поиск по вопросам

вторник, 9 июля 2019 г.

Как проверить была ли нажата любая клавиша на клавиатуре?

Задача состоит в том, что бы в цикле проверить, была ли нажата во время выполнения цикла какая либо клавиша на клавиатуре, и если была нажата - начать цикл заново.
Знаю _getch(); - Не работает как мне нужно, так как останавливает программу в ожидании нажатия.
Еще знаю _kbhit(); - Вроде работает как нужно, но если нажать клавишу, то при последующих итерациях цикла _kbhit(); все равно выдает ненулевое число, даже если я ничего больше не нажму.


Ответ

Объедините их :)
Например, вот цикл, работающий, пока не нажмете Esc
int main(int argc, const char * argv[]) { for(int i = 0;;++i) { cout << i << endl; if (_kbhit()) { int c = _getch(); if (c == 0x1B) break; } } }
Вот (если я правильно понял) примерно то, что вы хотите:
for(int i = 0;;++i) { cout << i << endl; if(_kbhit()) { while(_kbhit()) _getch(); } else { _getch(); } }

Комментариев нет:

Отправить комментарий