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

263
19 января 2017, 04:18

Задача состоит в том, что бы в цикле проверить, была ли нажата во время выполнения цикла какая либо клавиша на клавиатуре, и если была нажата - начать цикл заново.

Знаю _getch(); - Не работает как мне нужно, так как останавливает программу в ожидании нажатия.

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

Answer 1

Объедините их :)

Например, вот цикл, работающий, пока не нажмете 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();
    }
}
READ ALSO
Проблема инициализации DirectX

Проблема инициализации DirectX

Учусь DirectX по книге "DirectX и С++Искусство программирования" Фленовa М

280
Создать бд с помощью JSON

Создать бд с помощью JSON

Всем привет, есть таблица:

232
on duplicate key update в pymysql или сломай голову работая в Python

on duplicate key update в pymysql или сломай голову работая в Python

Подскажите как можно сделать on duplicate key update через pymysql на питоне

268
#1452 MySQL помогите

#1452 MySQL помогите

Ошибка SQL запрос:

396