我需要用于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.
你能为我的任务提出一些现成的解决方案吗?
答案 0 :(得分:1)
对于这种情况,似乎不存在现成解决方案:iostream包装器不支持追加操作。
我已经实现了基于gzlog和纯C(不是C ++)的自己的代码。