2013-11-20 23 views
2

我正在使用boostgzip_compressor和'gzip_decompressor'来压缩某些字符串。 我压缩串这样boost gzip_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()); 
} 

我在做什么错了?

预先感谢您!

回答

5

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

压缩部

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