Windows中可以使用
#include <conio.h>
for
_kbhit()
and
_getch()
组合。
Linux中可以自己实现一个kbhit()函数,代码如下:
#include <iostream>
#include <sys/ioctl.h>
#include <termios.h>
using namespace std;
bool kbhit()
termios term;
tcgetattr(0, &term);
termios term2 = term;
term2.c_lflag &= ~ICANON;
tcsetattr(0, TCSANOW, &term2);
int byteswaiting;
ioctl(0, FIONREAD, &byteswaiting);
tcsetattr(0, TCSANOW, &term);
return byteswaiting > 0;
int main()
int i;
int c;
while (true)
if (kbhit())
c = fgetc(stdin);
cout << endl;
switch (c)
case 'h':
cout << "you input h"<<endl;
break;
case 'p':
cout << "you input p"<<endl;
break;
default:
break;
return 0;
注释掉的方法(和头文件)也可以实现这个功能。
Windows中可以使用#include <conio.h> for _kbhit() and _getch()组合。Linux中可以自己实现一个kbhit()函数,代码如下:#include <iostream>// #include <unistd.h>#include <sys/ioctl.h>#include <termios.h>using namespace std;bool kbhit(){ termios
#include <unistd.h>
#define TTY_PATH "/dev/tty"
#define STTY_US "stty raw -echo -F "
#define STTY_DEF "stty -raw echo -F "
int get_char()
fd_set rfds;