我需要iostream包裝zlib,允許將數據追加到現有流的末尾。zlib帶支持流附件的iostream包裝
附加模式下的gzopen()函數遵循下一條規則。 「當追加時,gzopen不會測試文件是否以gzip流開始,也不會尋找gzip流的結尾開始追加,gzopen會簡單地將gzip流追加到現有文件中。」例如。用「a」選項打開文件將創建具有多個壓縮流的文件。
zlib的gzofstream包裝器將參數列表中的std :: ios_base :: app轉換爲gzopen()函數的「ab」模式。因此,gzofstream也將創建具有多個流的文件。
但是,在我的應用程序中,我需要替代行爲。主模塊應該以追加模式打開文件(使用std :: ios_base :: app選項),在現有流的末尾寫入小數據部分,然後關閉文件。例如,在多次打開/關閉操作之後,文件應該總是包含單個的壓縮流。
來自zlib的gzlog示例具有接近所需的功能。然而,它是純粹的C.你可以爲我的任務提出一些現成的解決方案嗎?
看一下[Boost iostreams庫](http://www.boost.org/doc/libs/1_51_0/libs/iostreams/doc/index.html),它支持壓縮流。 –
Boost庫與gzofstream具有相同的問題。它將流追加到文件中,但不會將數據添加到現有流中。 –