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