मैं ज़िप फ़ाइलों को पढ़ने के लिए बढ़ावा Iostream API को एकीकृत करने में कामयाब रहा। मैं बढ़ावा पेज में प्रलेखन का पालन किया और तो अब तक निम्नलिखित कोड है:मैं Gzip फ़ाइलों के लिए बूस्ट IOStreams इंटरफ़ेस का उपयोग करके लाइन-बाय-लाइन कैसे पढ़ सकता हूं?
std::stringstream outStr;
ifstream file("file.gz", ios_base::in | ios_base::binary);
try {
boost::iostreams::filtering_istreambuf in;
in.push(boost::iostreams::gzip_decompressor());
in.push(file);
boost::iostreams::copy(in, outStr);
}
catch(const boost::iostreams::gzip_error& exception) {
int error = exception.error();
if (error == boost::iostreams::gzip::zlib_error) {
//check for all error code
}
}
कोड ठीक काम करता है (ताकि :) ऊपर कोई लेखन त्रुटि और त्रुटियों को अनदेखा करें।)।
- ऐसा लगता है कि उपरोक्त कोड फ़ाइल को पूरा करेगा और इसे फ़िल्टरिंग_स्ट्रीमबफ बनाने के दौरान स्मृति में संग्रहीत करेगा। क्या यह सच है, मेरी जांच से यह मुझे ऐसा लगता है? अगर फ़ाइल मेमोरी में पढ़ी जाती है, तो यह कोड बड़ी फाइलों के लिए एक मुद्दा हो सकता है (जो मैं कर रहा हूं)।
- मेरा वर्तमान कोड gzgets API का उपयोग करके zzib लाइन से gzipped को gzipped पढ़ता है। बूस्ट एपीआई का उपयोग करके लाइन पढ़ने के द्वारा लाइन करने का कोई तरीका है?
धन्यवाद। मुझे इसे आज़माएं। मैं कक्षा के सदस्य के रूप में < in> स्टोर करने की उम्मीद कर रहा हूं। और गेटलाइन नामक कक्षा में सदस्य कार्य करते हैं। गेटलाइन वर्तमान फ़ाइल सूचक स्थिति से लाइन वापस करने में सक्षम होना चाहिए। – cppcoder