从没有cin的控制台获取输入?

时间:2011-01-21 01:03:08

标签: c++ c console

我正在尝试制作一个基本上是控制台乒乓球的小程序。所以我现在有这个:

int main()
{
    while(1)
    {
        clearScreen();
        restThread(100);
    }
    return 0;
}

我需要轮询的唯一输入是用户是否按下了A或D键,因为屏幕已被清除。我还需要知道密钥何时发布。我也试图做这个跨平台。

所以我真正需要的只是一个if(keyWasDown('a')){}类型的函数。

由于

2 个答案:

答案 0 :(得分:8)

也许您希望来自<conio.h>的{​​{3}}(非阻止)或kbhit(阻止)。还有来自<stdio.h><cstdio>的{​​{3}}。

如果您希望程序等待键盘按下,getchgetchar可以自行执行。

如果您 希望程序等待键盘按下,kbhitgetchgetchar结合就足够了。

然而,正如GMan所说,这些方法并不是真正的跨平台(如果你从不打算在不同的平台上尝试这个,那真的是没有用)。对于控制台游戏,您可能有兴趣查看getch

答案 1 :(得分:3)


#include <stdio.h>
#include <conio.h>

int main()
{
    while(1)
    {
        clearScreen();

        if(kbhit())
        {
            int const ch = getch();
            switch(ch)
            {
            case 0x61: printf("A was pressed!\n"); break;
            case 0x64: printf("D was pressed!\n"); break;
            }
        }

        restThread(100);
    }

    return 0;
}