Если вы находитесь в Windows, вы можете использовать PeekConsoleInput , чтобы определить, есть ли какие-либо входные данные,
HANDLE handle = GetStdHandle(STD_INPUT_HANDLE);
DWORD events;
INPUT_RECORD buffer;
PeekConsoleInput( handle, &buffer, 1, &events );
затем используйте ReadConsoleInput, чтобы «потреблять» вводимый символ ..
PeekConsoleInput(handle, &buffer, 1, &events);
if(events > 0)
{
ReadConsoleInput(handle, &buffer, 1, &events);
return buffer.Event.KeyEvent.wVirtualKeyCode;
}
else return 0
Если честно, это из какого-то старого кода, который у меня есть, так что вам придется немного поиграться с ним.
Крутая вещь заключается в том, что он считывает ввод без запроса чего-либо, поэтому символы вообще не отображаются.