我有一个“stringstream”变量,它以gzip格式存储一些压缩的二进制数据。
我想在内存中解压缩这个stringstream变量。
首先,对于gzip格式的二进制数据的内存中解压缩,您建议使用哪个第三方库?
我注意到zlib库用于压缩/解压缩gzip和deflate格式。
然而,处理zlip提供的解压缩的两个函数似乎并不完全符合我的需求:
int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
int gzread (gzFile file, voidp buf, unsigned len);
第一个(解压缩)要求我提前知道解压缩数据的长度,以便为存储正确分配足够的内存。就我而言,它是未知的。
另一方面,第二个(gzread)将文件作为输入,而不是内存缓冲区。
对于使用zlip或其他库进行“高效”内存中解压缩,您有什么建议?
感谢。
答案 0 :(得分:0)
在Boost库中似乎有一些gzip的解压缩过滤器,这可能值得研究:
http://www.boost.org/doc/libs/1_48_0/libs/iostreams/doc/classes/gzip.html