【发布时间】:2011-11-23 01:25:07
【问题描述】:
我有一个双向链表类,我想在用户键入字符时将字符添加到列表中,或者每次用户按下退格键时删除列表中的最后一个节点,同时在控制台中实际显示结果-时间。
我将使用哪些函数来拦截单个键盘输入,并将其实时显示到控制台?所以结果如下:
用户开始输入:
典型_
用户停止输入:
在屏幕上输入这个_
用户按退格键 5 次:
在 s_ 上输入这个
特定的操作系统是 windows(更具体地说是 vista)。
作为旁注,windows.h 下的 GetAsyncKeyState 似乎可能用于键盘输入,但是控制台的实时显示问题仍然存在。
【问题讨论】:
-
如果您也可以指定操作系统可能会很好,因为该级别的 IO 在操作系统之间有所不同,并且可能有更多增强的选项。
-
@Anders:按要求指定。
-
我不认为这是微不足道的。我认为您必须有效地删除控制台输入(以某种方式),监听 windows 消息泵以获取 keydown/up 事件,自己处理它,并自己渲染控制台输出。
-
如果您使用 MSVC,请使用 _getch()。 ReadConsoleInput() 是操作系统调用。