尝试在不阻塞的情况下读取键盘输入(Windows、C+;+;) 我试图编写一个Windows控制台应用程序(在C++中用G++编译),它将在一个循环中执行一系列指令直到完成,或者直到按下CTRL Z(或其他一些击键)。我目前用来捕获它的代码不起作用(否则我不会问,对吗?):

尝试在不阻塞的情况下读取键盘输入(Windows、C+;+;) 我试图编写一个Windows控制台应用程序(在C++中用G++编译),它将在一个循环中执行一系列指令直到完成,或者直到按下CTRL Z(或其他一些击键)。我目前用来捕获它的代码不起作用(否则我不会问,对吗?):,c++,windows,keyboard,C++,Windows,Keyboard,如果我按下一个键,它将被回响,应用程序将等待,直到我按下Enter键才能继续。值为26时,它不会执行预期的代码。如果我对要捕获的值使用类似于65的值,那么如果我按下A键,然后按Enter键,它将重新路由执行 有没有一种方法可以被动地检查输入,如果它不是我要找的,就把它扔掉,或者当它是我要找的,就正确地做出反应。。之后不必按Enter键?尝试避免烹饪模式,并避免阻塞。如果G++支持conio.h,则可以执行以下操作: #include <conio.h> #include <st

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


有没有一种方法可以被动地检查输入,如果它不是我要找的,就把它扔掉,或者当它是我要找的,就正确地做出反应。。之后不必按Enter键?

尝试避免烹饪模式,并避免阻塞。

如果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;
            }
        }
    }
}
#包括
#包括
void main()
{
对于(;;)
{
if(kbhit())
{
char c=getch();
如果(c==0){
c=getch();//获取扩展代码
}否则{
if(c=='a')//处理普通代码
打破
}
}
}
}

#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;
            }
        }
    }
}