读取和写入二进制文件
当尝试将二进制文件读入缓冲区并随后将缓冲区写入另一个文件时,它是使用适当的方法至关重要。提供的代码片段遇到错误,缓冲区仅捕获文件第一行中的几个 ASCII 字符,无法检索其全部内容。
要解决此问题,有两种推荐的方法:
使用 C方法:
利用 C 的流迭代功能,以下代码有效地将输入二进制文件的内容复制到输出文件中:
#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)); }
使用Buffer进行修改:
如果数据需要为了修改目的而存储在缓冲区中,可以采用以下方法:
#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中文网其他相关文章!