我想使用C ++(或C)中的gzip来压缩字符串。如果可能的话,我想使用zlib。
当我得知我必须使用zlib进行压缩和解压缩时,我用Google搜索了几分钟,然后快速编写了一个程序来gzip一个文件然后解压缩它。但是,我实际上没有必要这样做。我需要使用gzip压缩和解压缩字符串,而不是文件。我找不到很多关于在字符串上使用gzip的好文档。我发现的每个例子都适用于文件。
有人能告诉我一个简单的例子吗?
提前致谢。
答案 0 :(得分: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流连接到文件等,而不是上面的ostringstream。