c++ - boost gzip_compressor 和 gzip_decompressor

标签 c++ boost gzip

我正在使用 boostgzip_compressor 和“gzip_decompressor”来压缩一些字符串。 我正在像这样压缩字符串

string compressedString;
{
    filtering_ostream out;
    out.push(gzip_compressor(gzip_params(gzip::best_compression)));
    out.push(boost::iostreams::back_inserter(compressedString));
    out.write(stringToBeCompressed.c_str(), stringToBeCompressed.size());
}

它工作正常,但我无法解压它。这是我的代码

std::string decompressedString;
{
    filtering_ostream out;
    out.push(gzip_decompressor());
    out.push(boost::iostreams::back_inserter(decompressedString));
    out.write(compressedString.c_str(), compressedString.size());
}

我做错了什么?

提前致谢!

最佳答案

我找到了解决这个问题的方法。这是工作代码。

压缩部分

std::string compressedString;
{
    filtering_ostream compressingStream;
    compressingStream.push(boost::iostreams::gzip_compressor(gzip_params(gzip::best_compression)));
    compressingStream.push(boost::iostreams::back_inserter(compressedString));
    compressingStream << stringToBeCompressed;
    boost::iostreams::close(compressingStream);
}

解压部分

std::string decompressedString;
{
    boost::iostreams::filtering_ostream decompressingStream;
    decompressingStream.push(boost::iostreams::gzip_decompressor());
    decompressingStream.push(boost::iostreams::back_inserter(decompressedString));
    decompressingStream << stringToBeDecompressed;
    boost::iostreams::close(decompressingStream);
}

关于c++ - boost gzip_compressor 和 gzip_decompressor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20100059/

相关文章:

c++ - 派生自在私有(private)范围内声明的类

c++ - 如何初始化一个固定大小的数组并使用 C++11 中的 constexpr 函数或在 boost 的帮助下分配元素

javascript - 默认情况下如何使用 Rails 5 提供 gzip 资源

c# - Asp.net 4.0 网络服务压缩

c# - String to Char* 无内存泄漏

c++ - SendInput 鼠标时间

c++ - 如何确定转换为灰度的cv::Mat中的数据类型

c++ - 我可以检查一个类*不是*默认可构造的吗?

sockets - gethostbyname()(实际上,Boost Asio resolve())完全在2小时(120分钟,7200秒)后发生段故障

perl - 使用 curl 发布 Gzip 压缩数据