gpt4 book ai didi

C++ 确保绝对没有标准输入缓冲

转载 作者:行者123 更新时间:2023-11-30 19:13:59 24 4
gpt4 key购买 nike

在 C++ 中,是否可以对标准输入绝对NO缓冲?

在 Linux 中,您必须首先通过使用 termiosncurses 库将您正在使用的终端置于非规范模式。

在 Windows 中,您需要使用仅限 Windows 的 conio.h

是否有可能只使用标准 C++ 来创建一个简单的跨平台语句,以确保标准输入中发生的绝对所有都是实时发生的,并且可以在我的程序是实时的吗?

这意味着:等待回车符或换行符来解析输入,根本尝试处理转义字符,抛出异常适合不可打印的字符等。

我需要这样的东西:

setvbuf(stdin, NULL, _IONBF, 0);

但是终端无论如何都会等待换行符或回车符。

如果没有外部库,真的没有办法获得绝对原始的键盘输入吗?

如果有人能为我提供某种内联汇编或原始 C++ 解决方案,那就太好了。

最佳答案

不,除了标准 C/C++ 代码之外,不可能有一个简单的跨平台语句来解决您的问题。这是因为您不仅关心程序内的缓冲,还关心程序运行时环境(包括操作系统)完成的缓冲。根据环境的不同,您的程序可能根本不具备执行此操作的能力!

具体来说,我认为 C 和 C++ 标准库没有这样的功能。我认为这样做有充分的理由:操作系统之间 I/O 设施的细节差异如此之大,目前还不清楚如何以明确定义的、可实现的方式指定这样的要求。

请注意,缓冲可以在任何阶段添加。这是文件系统更一般的 I/O 的问题:在什么时候您可以确定您的文件写入已被推送到磁盘?即使您发出操作系统命令来同步您的文件系统,存储设备中的固件也会及时刷新其缓冲区...

关于C++ 确保绝对没有标准输入缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34815981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com