I need simple compression and decompression of std :: string in C ++. I looked at this site , and the code looked at an array of characters. I want to implement two functions:
std::string original = "This is to be compressed!!!!"; std::string compressed = string_compress(original); std::cout << compressed << std::endl; std::string decompressed = string_decompress(compressed); std::cout << decompressed << std::endl;
I tried boost compression like:
std::string CompressData(const std::string &data) { std::stringstream compressed; std::stringstream decompressed; decompressed << data; boost::iostreams::filtering_streambuf<boost::iostreams::input> out; out.push(boost::iostreams::zlib_compressor()); out.push(decompressed); boost::iostreams::copy(out, compressed); return compressed.str(); } std::string DecompressData(const std::string &data) { std::stringstream compressed; std::stringstream decompressed; compressed << data; boost::iostreams::filtering_streambuf<boost::iostreams::input> in; in.push(boost::iostreams::zlib_decompressor()); in.push(compressed); boost::iostreams::copy(in, decompressed); return decompressed.str(); }
but the code sometimes gives null characters in a string, i.e. \ u0000 . How to handle if compressed data contains these null characters. Is the return type string valid ? How to implement string_compress and string_decompress functions using zlib?
source share