支持流附加的zlib iostream包装器

时间:2012-09-26 14:16:20

标签: c++ gzip 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.

你能为我的任务提出一些现成的解决方案吗?

1 个答案:

答案 0 :(得分:1)

对于这种情况,似乎不存在现成解决方案:iostream包装器不支持追加操作。

我已经实现了基于gzlog和纯C(不是C ++)的自己的代码。