我正在寻找一个关于zlib的好教程。我只对解压缩档案感兴趣。我还想知道如何在存档中访问所需的文件,最好是单独使用文件名,如果可以在zlib中完成的话。
答案 0 :(得分:32)
有很多zlib文章,技巧和教程。其中一些是
1)Bobobobo的博客
网站:http://bobobobo.wordpress.com/2008/02/23/how-to-use-zlib/
这篇文章基本上告诉你如何 使用zlib,并有一个片段 能让你前进的代码。这个 项目向您展示如何使用zlib。它的 一个控制台项目,因为没有 需要创建一个窗口来演示 使用zlib。
2)zlib:为您的C / C ++应用程序添加工业强度压缩
网站:http://www.codeguru.com/cpp/cpp/algorithms/compression/article.php/c11735
为简单起见,本教程 仅涵盖基本的C风格 接口。所有固有的概念 与大多数其他人有关 绑定。由于它在C语言中,它 对你最有利 要求。
最后,你可以在zlib中使用它... Zlib包含它们。请查看“效用函数”下的手册。
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen));
答案 1 :(得分:4)
答案 2 :(得分:2)
http://www.boost.org/doc/libs/1_48_0/libs/iostreams/doc/classes/zlib.html
另一个值得一提的选择是提升。注意,您必须使用特殊标志编译boost以支持zlib。
答案 3 :(得分:1)
最简单的方法是读取zpipe.c
,其中有一个walk-through in zlib documentation。
它小巧而全面,实现并说明了压缩和解压缩。您可以仅复制,粘贴和修改数据流内容,例如,您可能不读写文件,而是读取内存。
要注意的一件事:如果要处理GZIP(而不是放气)(在发出HTTP请求时可能会发现),则需要将inflateInit(&strm)
替换为inflateInit2(&strm, 16 + MAX_WBITS)
,因为GZIP具有一个更大的标题。
答案 4 :(得分:0)
使用zlib的最简单方法是在C ++中使用
https://github.com/rudi-cilibrasi/zlibcomplete
zlibcomplete库使其变得简单,因为您无需进行任何原始指针操作。它基于RAII(资源分配是初始化),这意味着所有动态分配和解除分配的东西都会在构造函数中自动发生。
它比Boost zlib包装更好,因为它支持flush(交互式网络协议所必需)并且使用起来更简单。 zlibcomplete库只使用常规的std :: string来发送和接收数据,因此不需要高级知识。