C ++:_getch()行为异常

时间:2018-11-16 23:13:36

标签: c++ visual-studio-2017 dev-c++ getch

我15岁,我正在尝试制作游戏(很好,很意外),我想捕捉按键(也使用该功能进行密码输入)。这是代码:

StructReturn getCharacter() {
    StructReturn ReturnValue;
    char input[2];

    for (int a = 0; a < 2; a++) {
        input[a] = _getch();
    }

    ReturnValue.a = input[0];
    ReturnValue.b = input[1];

    std::cout << (int)ReturnValue.a << ", " << (int)ReturnValue.b << std::endl;

    return ReturnValue;
}

您不必告诉我有关

ReturnValue.a = input[0];
ReturnValue.b = input[1];

,这只是原始代码的缩写版本,因此在原始代码中更容易以这种方式阅读...

现在,当我在vs 2017(社区)中运行相同的代码时,得到的输出如下:

97, 0   //a
98, 0   //b
99, 0   //c
100, 0  //d

(一按,给我两个字符),如果我在DEV-C ++上运行它,则输出如下:

97, 98   //a, b
99, 100  //c, d

(一按,给我一个字符)。

我不知道这是怎么回事...能请你解释一下。谢谢!

编辑: getch returns 2 characters when I type one,感谢您提供此链接,但它仍然无法回答我的原始问题,只是说这是一个错误:为什么当我运行相同的代码时会有不同的结果在VS 2017和DEV-c ++上。 (应该是相同的结果,对吧?... VS 2017中的c ++和DEV-c ++中的c ++)

PS。

a)我需要使用_getch()之类的东西,因为我想捕获按键输入而不将其输出到控制台,以便我可以检测输入和输出密码的*并在其中移动游戏角色带有“ a”,“ w”,“ s”,“ d”的地图。

b)“ vs 2017”方式对我来说更好,因为这样我甚至可以捕获“向下箭头”,“向上箭头”等等。

c)对不起,我的英语。

0 个答案:

没有答案