实时键盘input到控制台(在Windows中)?

我有一个双链表类,我想在用户input时添加字符到列表中,或者每次用户按下退格键时删除列表中的最后一个节点,同时在控制台中实时显示结果。

我将使用什么函数来截取单个键盘input,并将其实时显示给控制台? 所以结果如下:

用户开始input:

Typ_

用户停止input:

在屏幕上input

用户按退格键5次:

在s_上input

特定的操作系统是Windows(更具体地说,是Vista)。

作为windows.h下面的GetAsyncKeyState的旁注,可能是键盘input,但是控制台的实时显示问题仍然存在。

Solutions Collecting From Web of "实时键盘input到控制台(在Windows中)?"

你会感到惊讶,但是这个代码会做你想做的事情:

/* getchar example : typewriter */ #include <stdio.h> int main () { char c; puts ("Enter text. Include a dot ('.') in a sentence to exit:"); do { c=getchar(); putchar (c); } while (c != '.'); return 0; } 

C ++没有“键盘”的概念。 它只有一个叫做“stdin”的不透明文件,可以从中读取。 但是,该“文件”的内容由您的环境填充,特别是由您的终端填充。

大多数终端在将输入行发送到附加过程之前会缓冲输入行,所以您永远不会看到后退的存在。 你真正需要的是直接控制终端。

这是一个非常依赖平台的过程,如果你喜欢具体的建议,你必须指定你的平台。 在Linux上,尝试ncursestermios

您可以使用ReadConsoleInput ,将列表添加到列表中,查找退格键(INPUT_RECORD-> KEY_EVENT_RECORD.wVirtualScanCode == VK_BACKSPACE),并从列表中删除所有列表中的最后一个字符。