将 zlib 用于 std::string 和 stringstream
Using zlib for std::string and stringstream
我正在使用 zlib
在客户端缩小字符串并在服务器端膨胀。
我找到了一个 link,它使用 char
缓冲区来完成此操作:
https://gist.github.com/arq5x/5315739
有人可以 post 使用 zlib 方法的简单示例 std::string
和 std::stringstream
做同样的事情吗?
编辑:请不要使用Boost
,因为我正在开发一个受限制的API。
所以,我从 zlib.h 文档和下载的 zlib 附带的 examples.c 中发现,您只能使用文件或字符缓冲区进行压缩。因此,将字符串或字符串流转换为字符缓冲区。
我在网上找到了一个非常有用的例子,对我有用:
blog: Compression of Simulation Data using ZLib
基本上,使用 gzwrite 和 gzread 进行写入和读取就像写入常规文件一样。写的时候先写字符串大小,再写字符串。阅读顺序相同。读的时候,先读入一个std::string的obj,然后就可以将string obj转成istringstream:
std::istringstream in(data); // data is std::string type, using the same notation as in the blog
为了写,把ostringstream obj转成std::string obj包装成函数也可能更灵活
我正在使用 zlib
在客户端缩小字符串并在服务器端膨胀。
我找到了一个 link,它使用 char
缓冲区来完成此操作:
https://gist.github.com/arq5x/5315739
有人可以 post 使用 zlib 方法的简单示例 std::string
和 std::stringstream
做同样的事情吗?
编辑:请不要使用Boost
,因为我正在开发一个受限制的API。
所以,我从 zlib.h 文档和下载的 zlib 附带的 examples.c 中发现,您只能使用文件或字符缓冲区进行压缩。因此,将字符串或字符串流转换为字符缓冲区。
我在网上找到了一个非常有用的例子,对我有用:
blog: Compression of Simulation Data using ZLib
基本上,使用 gzwrite 和 gzread 进行写入和读取就像写入常规文件一样。写的时候先写字符串大小,再写字符串。阅读顺序相同。读的时候,先读入一个std::string的obj,然后就可以将string obj转成istringstream:
std::istringstream in(data); // data is std::string type, using the same notation as in the blog
为了写,把ostringstream obj转成std::string obj包装成函数也可能更灵活