我永远不记得我是怎么做的,因为它对我来说很少出现。但是在C或C ++中,什么是从标准输入中读取字符而不等待换行符(按Enter)的最佳方法。
理想情况下,它也不会在屏幕上回显输入字符。我只想捕获击键而不会影响控制台屏幕。
最佳答案
在纯C ++中,这不可能以可移植的方式实现,因为它在很大程度上取决于所使用的可能与stdin
连接的终端(它们通常是行缓冲的)。但是,您可以为此使用库:
Windows编译器可用的conio。使用_getch()
功能可以为您提供一个字符,而无需等待Enter键。我不是Windows的常客,但是我看到我的同学只包含<conio.h>
并使用它。参见Wikipedia上的conio.h
。它列出了getch()
,在Visual C ++中声明了它已弃用。
适用于Linux的curses。兼容的curses实现也可用于Windows。它还具有getch()
功能。 (尝试man getch
查看其联机帮助页)。参见Wikipedia上的Curses。
如果您希望跨平台兼容,我建议您使用curses。就是说,我确定您可以使用一些功能来关闭行缓冲(我相信这称为“原始模式”,而不是“熟模式”-查找man stty
)。如果我没记错的话,Curses会以一种可移植的方式为您解决这个问题。
关于c++ - 从标准输入中捕获字符,而无需等待按下回车键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53176810/