C++ C++;解压缩gzip字节数组

C++ C++;解压缩gzip字节数组,c++,gzip,compression,inflate,C++,Gzip,Compression,Inflate,这里是完整的情况:我正在为.tmx文件开发一个地图阅读器,来自tiled。大多数情况下,磁贴都保存在base64字符串中,该字符串包含由gzip压缩的字节数组。现在我可以读取压缩字节数组,但我不知道如何解压缩它。我读了一些关于zlib和boost的文档,但都是关于文件流的,而且非常复杂 我对数据压缩领域非常陌生,因此如果有人知道某种解决方案或一些有用的文档,我将非常感激 #include <fstream> #include <iostream> #include <

这里是完整的情况:我正在为
.tmx
文件开发一个地图阅读器,来自tiled。大多数情况下,磁贴都保存在
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);
}
#包括 #包括 #包括 #包括 int main() { 使用名称空间std; ifstream文件(“hello.gz”,ios_base::in | ios_base::binary); 过滤_streambuf in; in.push(gzip_decompressor()); in.push(文件); boost::iostreams::copy(in,cout); }
我不确定从上面的例子中看什么是困难或复杂的。解压过程非常简单。在解压缩之前,请确保解码base64。(应该对您有所帮助)

并记住从其他体系结构接收流时的字节顺序问题是我不了解过滤是如何工作的,我需要膨胀字符*而不是文件。。。(我知道可以将char*放入文件中,稍后读取结果,但我正在考虑更简单的方法)关于字节顺序,tiled是little endian,它已经给我带来了一些麻烦,但现在没事了。。。感谢您的关注:)您只需将
char*
放入一个流中,您可以使用
stringstream
来执行此操作。