【发布时间】:2016-04-21 08:05:11
【问题描述】:
在 C++ 中,是否可以绝对NO对标准输入进行缓冲?
在 Linux 中,您必须首先将您正在使用的终端设置为非规范模式,方法是使用 termios 或 ncurses 库。
在 Windows 中,您需要向我们提供仅限 Windows 的 conio.h。
是否有可能有一个简单的、跨平台的语句,只使用标准 C++ 来确保标准输入中发生的绝对一切都是实时发生的,并且可以在我的程序是实时的吗?
这意味着:不等待回车或换行来解析输入,不尝试处理转义字符,不抛出适合不可打印的字符等。
我需要这样的东西:
setvbuf(stdin, NULL, _IONBF, 0);
但终端无论如何都会等待换行符或回车。
真的没有办法在没有外部库的情况下获得绝对原始的键盘输入吗?
如果有人可以为此提供某种内联汇编或原始 C++ 解决方案,那就太好了。
【问题讨论】:
-
本题请选择 C 和 C++ 之一。此外,终端配置独立于 stdio 缓冲。
-
不,没有真正可移植的方式(这就是为什么为此目的存在 100 多个库的原因),甚至汇编也无法帮助您。说真的,组装应该怎么做?
-
投反对票,因为没有称为 C/C++ 的语言。请至多选择 C 和 C++ 中的一种,除非您的问题专门针对两者的交互。
-
在某些系统上,终端确实是位于数千英里之外的终端,并进行自己的缓冲。编程语言对此无能为力。