клавиатура — Как я могу определить, нажата ли какая-либо клавиша пользователем в C ++ (консоль)?

Я пишу C ++ CLI-приложение, как я могу определить, нажата ли какая-либо клавиша пользователем. Я видел это в C #, но как это можно реализовать в C ++

while(1)
{
while(/* code to check if any key is pressed*/)
{        //rest of the code
// sleep function
}
}

Подсказка: как в CLI-играх двигаться или предпринимать определенные действия при нажатии клавиши, или ничего не делать, если не вводить данные.

2

Решение

На окнах, по крайней мере, вы могли бы использовать GetKeyState

1

Другие решения

мы можем использовать функцию _kbhit () в c ++. _kbhit равно 1, если нажата какая-либо клавиша. Вы должны очистить буфер _kbhit, в противном случае он останется 1. Метод очистки — символ = getch (); Это сохранит последний введенный ключ в символе, который вы можете сравнить и решить, какое действие выполнить над каким ключом.

1

Хотя цикл может потреблять процессор, я не советую использовать метод ожидания, вместо этого вы должны подумать о перехвате событий.

Здесь вы можете прочитать о перехвате событий нажатия клавиш в Winapi. C ++ Win32 события клавиатуры

Если вы по-прежнему заинтересованы в использовании цикла while, вам также следует освободить некоторые ресурсы, спя после проверки, что условие ложно (например, nanosleep)

0
По вопросам рекламы [email protected]