Задача состоит в том, что бы в цикле проверить, была ли нажата во время выполнения цикла какая либо клавиша на клавиатуре, и если была нажата - начать цикл заново.
Знаю _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();
}
}
Комментариев нет:
Отправить комментарий