c++ - 是否需要为 C/C++ 中的文件 I/O 操作创建自己的缓冲区?

标签 c++ c file io buffer

是否需要使用自定义缓冲区来读取或写入 C 或 C++ 中的文件以减少文件 I/O?

例如,如果您需要逐条读取文件条目(一次一个字符,或一次一个结构),是否建议使用缓冲区减少对 fread() 的调用次数?它对 I/O(读和写)有什么影响吗? 答案是否取决于操作系统或代码中没有的任何其他内容?

我知道这是推荐的,但是今天有人告诉我 stdio.h 上的 setvbuf(),看起来一切都已经存在了,你不需要将这种复杂性添加到您的程序中。

查看 stackoverflow,我找到了 an answer没有投票声称使用 fgetc/setvbuf()fgets 之间没有显着差异。这是真的吗?

最佳答案

fread() 函数已经实现了缓冲,以避免过于频繁地调用较低级别的 read()。除非您进行了一些基准测试并发现文件 I/O 花费了大量时间,否则您不必担心它。

关于c++ - 是否需要为 C/C++ 中的文件 I/O 操作创建自己的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006160/

相关文章:

file - 在pyscript中从本地计算机读取文件时出现问题

c - C 中没有条件、循环和算术运算符的阶乘

python - 看门狗监控文件的变化

c++ - 我应该扩展 QT 小部件还是使用我自己的包含小部件的类作为成员?

c++ - 更改默认代码 Visual Studio 2015 Community

无法将正确的文件目录输出到带有 .cFileName 的链接列表

c - 如何让我的 makefile 自动链接库?

file - 如何从文件中获取随机行?

c++ - wdk ddk 编译器问题与 OutputDebugString

c++ - OpenCV destroyWindow() 不执行任何操作。