首页 >后端开发 >C++ >如何在 C 中有效地读写二进制文件并避免缓冲问题?

如何在 C 中有效地读写二进制文件并避免缓冲问题?

Barbara Streisand
Barbara Streisand原创
2024-12-12 20:45:14331浏览

How Can I Efficiently Read and Write Binary Files in C   Avoiding Buffering Issues?

有效读取和写入二进制文件

尝试读取和写入二进制文件通常会带来挑战,例如当生成的缓冲区仅包含预期数据的一部分。如果您遇到此问题,本文提供了两种解决这些限制的替代方法。

C 特定方法

以下 C 代码使用 copy 函数和流迭代器直接复制文件内容而无需缓冲:

#include <fstream>
#include <iterator>
#include <algorithm>

int main()
{
    std::ifstream input("C:\Final.gif", std::ios::binary);
    std::ofstream output("C:\myfile.gif", std::ios::binary);

    std::copy(
        std::istreambuf_iterator<char>(input),
        std::istreambuf_iterator<char>(),
        std::ostreambuf_iterator<char>(output));
}

这种方法维护文件的完整性并确保准确的数据传输。

使用向量缓冲

如果您需要缓冲区中的文件内容进行修改,以下代码使用 向量和流迭代器:

#include <fstream>
#include <iterator>
#include <vector>

int main()
{
    std::ifstream input("C:\Final.gif", std::ios::binary);

    // Copies all data into buffer
    std::vector<unsigned char> buffer(
        std::istreambuf_iterator<char>(input), {});
}

此解决方案允许您操作在将文件内容写入所需的输出文件之前将其内容存储在内存中。

以上是如何在 C 中有效地读写二进制文件并避免缓冲问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn