要使用zlib压缩/解压数据,首先需要设置一个名为z_stream
的结构体。
z_stream
有两个非常量指针,分别是next_in
和next_out
。
如果我想要执行这样一个函数:
void ungzip(std::vector<unsigned char>& dst,const std::vector<unsigned char>& src)
{
z_stream strm;
// more code
}
还有其他相似的内容,
void gzip (std::vector<unsigned char>& dst,const std::vector<unsigned char>& src);
我该怎么做?
将src复制到本地std::vector<unsigned char>
中。
std::vector<unsigned char> tmp(src);
您可以像这样使用它作为源或设置指针,strm.next_in = const_cast<char*>(&src[0])
?
zlib是否保留输入数据?
vector<unsigned char>
中。 - M.Mconst
。默认情况下,next_in
不是const
,因为许多应用程序在 zlib 之外使用next_in
读取其数据。将其设置为const
将破坏这些应用程序。 - Mark Adler