尝试阅读没有阻塞的键盘input(Windows,C ++)

我正在尝试编写一个Windows控制台应用程序(在使用g ++编译的C ++中),它将在循环中执行一系列指令,直到完成或直到按下ctrl-z(或其他一些按键)。 我目前用来捕捉它的代码不工作(否则我不会问,对吧?):

if(kbhit() && getc(stdin) == 26) //The code to execute when ctrl-z is pressed 

如果我按下一个键,它将被回显,应用程序将等待,直到我按Enter键继续。 值为26时,它不执行预期的代码。 如果我使用类似于65的值来捕捉值,那么如果按A然后input,它将重新路由执行。

有没有办法被动地检查input,如果它不是我正在寻找的东西,或者当我正在寻找什么时候正确地作出反应,就会抛出它? ..而不必在事后按Enter键?

Solutions Collecting From Web of "尝试阅读没有阻塞的键盘input(Windows,C ++)"

尝试使用ReadConsoleInput来避免熟化模式,并使用GetNumberOfConsoleInputEvents来避免阻塞。

如果G ++支持conio.h,那么你可以这样做:

 #include <conio.h> #include <stdio.h> void main() { for (;;) { if (kbhit()) { char c = getch(); if (c == 0) { c = getch(); // get extended code } else { if (c == 'a') // handle normal codes break; } } } } 

这个链接可能会为你解释一些事情。