2011-03-28 12 views
6

dan satır satır erişmek için nasıl bir Logparser Uygulama yazdı ve şimdi .gz dosyaların dekompresyon uygulamak istiyoruz. Çalışır gibi görünen boost :: iostreams ve zlib ile çalıştım, ancak sıkıştırılmış dosyalardan aldığım girdileri nasıl kullanacağımı bilmiyorum.boost :: gzip_decompressor ile filtering_streambuf(), dosyanın

İşte böyle yapar:

input.open(p.source_at(i).c_str(), ios_base::in | ios_base::binary); 
boost::iostreams::filtering_streambuf<boost::iostreams::input> in; 
in.push(boost::iostreams::gzip_decompressor()); 
in.push(input); 
boost::iostreams::copy(in, cout); 

Bu kod çalıştırılır, benim sourcefile biten gz varsa. Son satır, sıkıştırılmış filestream'i doğru şekilde cout'a gönderir.

Ama nasıl ben decompressed dosyadan satır satır getirebilir? Programım, sıkıştırılmamışsa giriş akışından satır okumak için getline (giriş, aktarma) kullanır.

Şimdi decompressed dosyadan aynı şekilde okumak istiyorum, ama nasıl ben yeni bir hattın alabilirim?

artırmak decumentation bu konuda bana çok yardımcı olmadı.

Şimdiden teşekkürler!

cevap

8

Bunu buldum.

std::istream incoming(&in); 
getline(incoming, transfer); 
: Sadece tampon bir başvuru, bir std :: ıstream oluşturmak ve geçmek zorunda