【发布时间】:2013-05-12 09:31:36
【问题描述】:
在 C 中,我可以轻松地将流设置为无缓冲 I/O:
FILE * f = fopen( "test", "r" );
setvbuf( f, (char *)NULL, _IONBF, 0 );
如何使用 C++ IOStreams 实现类似的无缓冲 I/O?
【问题讨论】:
-
我认为
fopen()返回FILE*是高级别的,它隐式地进行缓冲区管理,而使用文件描述符open()进行低级文件处理时,您必须显式地进行缓冲区操作。 -
@bjskishore123:这不是 C 问题,C 示例只是为了澄清我在说什么。已还原您的标签编辑。
-
@GrijeshChauhan:不。
fopen()是 ISO C,open()是 POSIX,并且可以禁用 ISO C 函数的隐式缓冲,如我所演示的。无论如何,这完全不是问题(即“如何使用 C++ 流实现无缓冲 I/O”)。 -
谢谢!!我不知道如何禁用隐式缓冲。
-
@GrijeshChauhan:那么请注意,在您对相关的
FILE完成任何其他操作之后,您不得致电setvbuf()(当然,fopen()除外)。那将是UB。