c++ - 从标准输入中捕获字符,而无需等待按下回车键

标签 c++ c inputstream

我永远不记得我是怎么做的,因为它对我来说很少出现。但是在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/

相关文章:

C++ static_cast 向下转换有效性

c - 各种编译器中的编译指示 swp、ivdep、预取支持

java - 使用 SQLITEOpenHelper 在 Android SQLite 中存储 BLOB

c - 油嘴滑舌 C : program does not recognize GLIB library

Java - 从 S3 对象逐行读取 (JSON) 数据

java - 我应该关闭 org.apache.commons.io.IOUtils 的 InputStream

c++ - 我什么时候会在基类中默认(而不是删除)复制和移动操作

c++ - OpenGL 在自己的轴上旋转 3D 立方体

c++ - 插入到 2-3-4 树中

在 C 中创建一个管道