Unter Windows können Sie in Visual Studio (VS) die Funktion _kbhit() verwenden, um Tastaturereignisse abzurufen. Wenn Sie sie verwenden, müssen Sie die Header-Datei conio.h einbinden, z. B.:

Beispiel

#include <conio.h> #include <iostream> using namespace std; int main() { int ch; while (1){ if (_kbhit()){// Wenn eine Taste gedrückt wird, gibt die Funktion _kbhit() true zurück ch = _getch();// Verwenden Sie die Funktion _getch(), um den Wert der gedrückten Taste abzurufen cout << ch; if (ch == 27){ break; }// Wenn ESC gedrückt wird, die Schleife verlassen; der Tastenwert der ESC-Taste ist 27. } } system("pause"); }

Unter Unix/Linux wird die Funktion kbhit() nicht bereitgestellt. Wir können kbhit() selbst implementieren.

Beispiel

#include <stdio.h> #include <termios.h> static struct termios initial_settings, new_settings; static int peek_character = -1; void init_keyboard(void); void close_keyboard(void); int kbhit(void); int readch(void); void init_keyboard() { tcgetattr(0,&initial_settings); new_settings = initial_settings; new_settings.c_lflag |= ICANON; new_settings.c_lflag |= ECHO; new_settings.c_lflag |= ISIG; new_settings.c_cc[VMIN] = 1; new_settings.c_cc[VTIME] = 0; tcsetattr(0, TCSANOW, &new_settings); } void close_keyboard() { tcsetattr(0, TCSANOW, &initial_settings); } int kbhit() { unsigned char ch; int nread; if (peek_character != -1) return 1; new_settings.c_cc[VMIN]=0; tcsetattr(0, TCSANOW, &new_settings); nread = read(0,&ch,1); new_settings.c_cc[VMIN]=1; tcsetattr(0, TCSANOW, &new_settings); if(nread == 1) { peek_character = ch; return 1; } return 0; } int readch() { char ch; if(peek_character != -1) { ch = peek_character; peek_character = -1; return ch; } read(0,&ch,1); return ch; } int main() { init_keyboard(); while(1) { kbhit(); printf("\n%d\n", readch()); } close_keyboard(); return 0; }