有效讀取和寫入二進位檔案
嘗試讀取和寫入二進位檔案通常會帶來挑戰,例如當生成的緩衝區僅包含預期資料的一部分。如果您遇到此問題,本文提供了兩種解決這些限制的替代方法。
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中文網其他相關文章!