讀取和寫入二進位檔案
當嘗試將二進位檔案讀入緩衝區並隨後將緩衝區寫入另一個檔案時,它是使用適當的方法至關重要。提供的程式碼片段遇到錯誤,緩衝區僅捕獲文件第一行中的幾個 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中文網其他相關文章!