C++确保绝对没有标准输入缓冲
C++ making sure there is absolutely no stdin buffering
在C++中,标准输入是否有可能绝对没有缓冲?
在 Linux 中,您必须首先将您使用的终端置于非规范模式,方法是拧紧termios
或ncurses
库。
在Windows中,您需要我们 仅限Windows conio.h
。
是否有可能只使用标准C++来制作一个简单的跨平台语句,以确保标准输入中发生的一切都是实时发生的,并且可以由我的程序实时访问?
这意味着:不等待回车符或换行符来解析输入,根本不尝试处理转义字符,不抛出不可打印字符的拟合等。
我需要这样的东西:
setvbuf(stdin, NULL, _IONBF, 0);
但无论如何,终端都会等待换行符或回车。
没有外部库真的没有办法获得绝对原始的键盘输入吗?
如果有人能为此为我提供某种内联组装或原始C++解决方案,那就太好了。
不,不可能只使用标准的 C/C++ 代码来解决问题的简单跨平台语句。 这是因为您不仅关心程序内的缓冲,还关心程序的运行时环境(包括操作系统)完成的缓冲。 根据环境的不同,您的程序可能只是缺乏执行此操作的能力!
具体来说,我认为 C 和 C++ 标准库没有这样的功能。 我希望这样做有充分的理由:I/O 设施的细节在操作系统之间差异如此之大,目前尚不清楚您将如何以定义明确、可实现的方式指定这样的要求。
请注意,缓冲是可以在任何阶段添加的东西。 这是文件系统更通用的 I/O 的问题:在什么时候可以确定文件写入已推送到磁盘? 即使您发出操作系统命令来sync
文件系统,也取决于存储设备中的固件是否及时刷新其缓冲区......
相关文章:
- 从标准输入读取文件后读取用户输入
- 如何从标准输入中检测格式化输入错误?
- C++ - 标准输入环路
- 快速读取标准输入缓冲区,无需检查
- 将标准输入中的双精度存储在矢量中
- 如何将 getline 与标准输入一起使用?
- 从 C++ 中的标准输入迭代读取字节
- C++计算标准输入的字数
- 如何从 c++ 中的给定标准输入中获取每个字符的偏移量?
- 为什么此代码从标准输入中少一个输入?
- 如何在C++中从标准输入中获取变量输入
- C++ 从标准输入读取文件名
- 从标准输入读取多个类型时出现问题
- 如何在execl中使用标准输入'<'?
- 如何在 eclipse 中将标准输入从控制台更改为另一个程序
- 流对象来表示文件输入,然后是标准输入?
- 标准输入输出操作如何C++完成
- 从标准输入读取时zmq_poll不侦听信号
- 是否可以从标准输入指向指针的地址
- C++确保绝对没有标准输入缓冲