मैं के रूप में बढ़ावा देने साइट पर उनके उदाहरण में दिखाया गया फ़ाइलों के gzip/zlib विसंपीड़न कार्यान्वित किया।बढ़ावा gzip दबाव हटाना बाइट सरणी
void CompressionUtils::Inflate(std::ifstream& inputFile,
std::ofstream& outputFile)
{
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::gzip_decompressor());
in.push(inputFile);
boost::iostreams::copy(in, outputFile);
}
इस ठीक काम करता है। मैं एक सॉकेट से भी डेटा पढ़ रहा हूं कि मुझे एक बाकी आधारित जेएसओएन सेवा से मिल रहा है जो संपीड़ित है। मैंने सोचा कि मैं एक स्मृति आधारित कार्यान्वयन लिखूंगा, यह कितना मुश्किल हो सकता है। खैर, मुझे लगा कि मुझे धाराओं और स्ट्रीम बफर को समझना नहीं है जैसा मुझे करना चाहिए। मैं जावा में पिछले कुछ वर्षों को दोषी ठहराता हूं;) .. तो मैंने इस पथ को शुरू कर दिया।
void CompressionUtils::Inflate(char* compressed,
int size,
char* decompressed)
{
boost::iostreams::stream<boost::iostreams::array_source> source(compressed,size);
//std::stringstream str;
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::gzip_decompressor());
in.push(source);
//boost::iostreams::copy(in, str);
}
लेकिन मैं के रूप में एक नुकसान में हूँ धारा किस तरह मैं मूल रूप से decompressed धारा के decompressed char*
प्रतिनिधित्व प्राप्त करने के लिए उपयोग कर सकते हैं। यह आसान होना चाहिए, और शायद यह है, लेकिन मैं पिछले कुछ घंटों को असफल प्रयासों के साथ बर्बाद कर रहा हूं।
आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मुझे एक कोशिश करनी ही होगी –