1

C++ (または C) の gzip を使用して文字列を gzip したいと考えています。できればzlibを使いたいです。

圧縮と解凍にzlibを使用する必要があることを知ったとき、私はそれを数分間グーグルで検索し、すぐにファイルをgzipしてから解凍するプログラムを作成しました. しかし、私は実際にそれを行う必要はありません。ファイルではなく文字列を圧縮および解凍するには、gzip を使用する必要があります。文字列で gzip を使用するための適切なドキュメントはあまり見つかりませんでした。私が見つけたすべての例は、ファイルで動作します。

誰かが私に簡単な例を見せてもらえますか?

前もって感謝します。

4

1 に答える 1

1

これは Poco に組み込まれています (C++ ライブラリ/フレームワーク、多くのユーティリティ、ネットワーキングなど)。サンプルプログラムは次のとおりです。

#include <iostream>
#include <sstream>
#include <Poco/InflatingStream.h>
#include <Poco/DeflatingStream.h>
#include <Poco/StreamCopier.h>

int main() {

    std::ostringstream stream1;
    Poco::DeflatingOutputStream
      gzipper(stream1, Poco::DeflatingStreamBuf::STREAM_GZIP);
    gzipper << "Hello World!";
    gzipper.close();
    std::string zipped_string = stream1.str();
    std::cout << "zipped_string: [" << zipped_string << "]\n";

    std::ostringstream stream2;
    Poco::InflatingOutputStream
      gunzipper(stream2, Poco::InflatingStreamBuf::STREAM_GZIP);
    gunzipper << zipped_string;
    gunzipper.close();
    std::string unzipped_string = stream2.str();
    std::cout << "unzipped_string back: [" << unzipped_string << "]\n";

    return 0;
}

良い点は、上記の ostringstreams の代わりに、Poco gzipping ストリームをファイルなどに接続できることです..

于 2014-07-08T18:33:34.023 に答える