6

完全な状況は次のとおりです.tmx。タイル化されたファイルのマップリーダーに取り組んでいます。ほとんどの場合、タイルは文字列に保存されます。base64文字列には、によって圧縮されたバイトの配列が含まれていますgzip。現在、圧縮されたバイトの配列を読み取ることはできますが、解凍する方法がわかりません。zlibとについてのドキュメントをいくつか読みboostましたが、どちらもファイルストリームに関するもので、非常に複雑でした...

私はデータ圧縮の分野に非常に慣れていないので、誰かがちょっとした解決策や役立つドキュメントを知っているなら、私は本当に感謝します。

4

1 に答える 1

9
#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);
}

http://www.boost.org/doc/libs/1_36_0/libs/iostreams/doc/classes/gzip.htmlから取得した上記の例を見ると、何が難しいのか複雑なのかわかりません。減圧は非常に簡単です。解凍する前に、必ず base64 をデコードしてください。( C で base64 エンコード (デコード) するにはどうすればよいですか?役立つはずです)

于 2011-05-08T20:15:12.793 に答える