1

我想使用 C++(或 C)中的 gzip 来 gzip 字符串。如果可能,我想使用 zlib。

当我得知我必须使用 zlib 进行压缩和解压缩时,我在 Google 上搜索了几分钟,然后快速编写了一个程序来 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;
}

好消息是,您可以将 Poco gzipping 流连接到文件等,而不是上面的 ostringstreams。

于 2014-07-08T18:33:34.023 回答