7

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

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

是否有其他替代方案,包含在标准 C++ 库中?

4

2 回答 2

8

你不会在标准库中找到任何东西。这完全取决于平台。例如,在 Windows 中,您可以GetAsyncKeyState获取键盘上某个键的状态等功能。

SDLSFML都有独立于平台的事件处理。

于 2013-07-06T08:15:00.977 回答
-1

您所描述的本身不是“控制台程序”,而是外壳。此外,您不想处理传入事件;您宁愿简单地从命令行读取。

为此,有多种方法。Windows 有ReadConsoleInput。不过,更灵活的方法是使用 getline。

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

  return 0;
}

为了让你有特别的工作,你只需要将以前的输入存储在一个std::vector<string>或类似的文件中。

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

于 2013-07-06T08:14:11.147 回答