二進位檔案操作:讀取和寫入
在程式設計領域,處理二進位檔案可能會帶來獨特的挑戰。一項常見任務是將二進位檔案讀入緩衝區,然後將其寫入另一個檔案。但是,某些方法可能會遇到限制,可能導致資料不一致。
問題陳述
其中一種方法涉及使用 char 數組緩衝區並手動管理文件 I/O運營。但是,此方法通常會導致緩衝區僅捕獲文件第一行中的幾個 ASCII 字符,而無法存取其餘資料。
C 解決方案
The 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)); }
此程式碼使用 std::ifstream 和 std::ofstream 類別進行輸入和輸出操作。 std::copy 函數有效地將輸入檔的全部內容傳輸到輸出檔中,無縫鏡像其二進位資料。
緩衝的替代解決方案
如果您需要在寫入之前存取緩衝區中的二進位資料進行修改,請考慮以下方法:
#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), {}); }
此方法採用std::vector 收集二進位數據,如果需要,可以在將其寫入目標檔案之前對其進行存取以進行修改。
以上是如何用C語言高效率讀寫二進位文件,同時避免資料遺失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!