【发布时间】:2010-11-20 01:31:54
【问题描述】:
有没有办法在不使用 Windows 消息或 std::cin 流的情况下获得控制台中的最后一次按键?我听说标准库中有一个函数。解决方案最好尽可能便携。提前感谢您的帮助。
【问题讨论】:
-
你关心最后一个 character 还是最后一个 keypress(例如,包括 shift、control 和箭头键等修饰符)?如果是按键,那么在便携性方面你就很不走运了。
有没有办法在不使用 Windows 消息或 std::cin 流的情况下获得控制台中的最后一次按键?我听说标准库中有一个函数。解决方案最好尽可能便携。提前感谢您的帮助。
【问题讨论】:
您是否考虑过使用像 pdcurses 这样的 curses 库?这就是我所知道的唯一一个可以进行控制台管理的跨平台库。
【讨论】:
不是很便携,但您甚至可以从 Windows 下的控制台应用程序使用 GetAsyncKeyState 访问当前键状态。 更具技术性且同样特定于 Windows 的方法是使用 SetWindowsHookEx 将键盘挂接到系统中的回调中,该回调仅存储最后按下的键。
但是您的基本问题:控制台 + 可移植性 - 似乎暗示 cin 是您最好的选择 - 您需要 cin 不提供的什么?
【讨论】: