C++ 如何使用zlib轻松压缩和解压缩文件?
如何使用zlib轻松压缩和解压缩文件?请仔细阅读。信息已可用:C++ 如何使用zlib轻松压缩和解压缩文件?,c++,zlib,compression,C++,Zlib,Compression,如何使用zlib轻松压缩和解压缩文件?请仔细阅读。信息已可用: 这是谷歌上出现的第一个链接 对于解压缩: char buf[1024*1024*16]; gzFile *fi = (gzFile *)gzopen("file.gz","rb"); gzrewind(fi); while(!gzeof(fi)) { int len = gzread(fi,buf,sizeof(buf)); //buf contains len bytes of decompressed d
这是谷歌上出现的第一个链接 对于解压缩:
char buf[1024*1024*16];
gzFile *fi = (gzFile *)gzopen("file.gz","rb");
gzrewind(fi);
while(!gzeof(fi))
{
int len = gzread(fi,buf,sizeof(buf));
//buf contains len bytes of decompressed data
}
gzclose(fi);
压缩
gzFile *fi = (gzFile *)gzopen("file.gz","wb");
gzwrite(fi,"my decompressed data",strlen("my decompressed data"));
gzclose(fi);
如果您可以使用boost,我建议使用boostiostreamsapi。见
. 它支持GZIP和BZIP2压缩器和解压缩程序。我觉得文档编写起来并不容易。这里不是只有一个简单的函数,比如compress()decompress()?@Downvoter:想解释一下为什么会有downvote吗?OP从未在原始问题中提到他/她不理解zlib网站上的示例。我提供了这些的链接,这有什么问题吗?我想说,任何人如果问这样的问题,都应该很明显,他们已经RTFM了,仍然需要帮助,我发现zlib“示例”对我自己来说非常没有帮助,例如,我们大多数人都没有试图解压缩stdin。@Datoxalas是的,事实上有
compress()
和解压缩()
zlib提供的函数。你看过文档了吗?@Cristi:我发现一个错误:main.cpp从
const void*”到void*”的转换无效,在这行:gzwrite(fi,“我的解压缩数据”,strlen(“我的解压缩数据”)代码>。你能帮我吗?试试gzwrite(fi,(void const*)“我的解压缩数据”,strlen(“我的解压缩数据”)@克里斯蒂:我得到了同样的错误。在你的zlib发行版中,gzwrite似乎将void*作为第二个参数,而不是像我一样将const void*作为第二个参数。一个快速的错误修复方法是gzwrite(fi,(void*)“我的解压缩数据”,strlen(“我的解压缩数据”)@克里斯蒂:现在我得到了:[Linker error]对“gzopen”的未定义引用。
。你读了吗?如果是,你试过什么?如果您尝试的方法无效,请发布您的代码并说明发生了什么。