这是完整的情况说明:我正在为从tiled读取的.tmx文件开发地图阅读器。大多数时候,瓷砖被保存在一个base64字符串中,其中包含由gzip压缩的字节数组。现在我可以读取压缩字节数组,但我不知道如何解压缩它。我阅读了一些关于zlib和boost的文档,但都是关于文件流且非常复杂的...
我对数据压缩领域非常陌生,所以如果有人知道某种解决方案或一些有用的文档,我会非常感激。
我对数据压缩领域非常陌生,所以如果有人知道某种解决方案或一些有用的文档,我会非常感激。
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
int main()
{
using namespace std;
ifstream file("hello.gz", ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
in.push(gzip_decompressor());
in.push(file);
boost::iostreams::copy(in, cout);
}
char*
放入流中,使用stringstream
即可实现。具体请参考http://www.cplusplus.com/reference/iostream/stringstream/。 - David Titarenco