有效读取和写入二进制文件
尝试读取和写入二进制文件通常会带来挑战,例如当生成的缓冲区仅包含预期数据的一部分。如果您遇到此问题,本文提供了两种解决这些限制的替代方法。
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中文网其他相关文章!