如何处理c ++中的按键事件

时间:2013-07-06 08:05:29

标签: c++ console-application keypress standard-library

我正在编写自定义控制台程序。我想让它看起来像一个真实的。所以我想用keypress事件绑定一些动作。

例如,当按下向上箭头时,应向用户显示先前执行的命令。我知道SDL。但我认为它不是标准库,是吗?

如果还有其他选择,包括在标准CPP库中,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:5)

您无法在标准库中找到任何内容。这完全取决于平台。在Windows中,您可以使用GetAsyncKeyState等函数来获取键盘上键的状态。

SDLSFML都有与平台无关的事件处理。

答案 1 :(得分:0)

你所描述的不是一个“控制台程序”本身,而是一个shell。 此外,您不希望处理传入事件,而只是想从命令行中读取。

要做到这一点,有各种方法。 Windows有ReadConsoleInput。 更灵活的方法是使用getline。

int main ()
{
  string mystr;
  cout << "What's your name? ";
  getline (cin, mystr);

  return 0;
}

为了让你工作特别,只需将以前的输入存储在std::vector<string>或类似的内容中。

要从控制台读取原始输入(不带回声),您应该使用_getch()