Como posso ler linha por linha usando a interface do Boost IOStreams para arquivos Gzip?

Consegui integrar as APIs Iostream de impulso para ler arquivos compactados. Segui a documentação na página de reforço e tenho o seguinte código até agora:

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

O código funciona bem (por isso, ignore quaisquer erros de digitação e erros acima:)

Parece que o código acima lerá o arquivo completo e o armazenará na memória enquanto cria o filtering_istreambuf. Isso é verdade, da minha investigação parece-me assim? Se o arquivo for lido na memória, esse código pode ser um problema para arquivos grandes (é com isso que estou lidando). Meu código atual lê o gzipped usando a API gzgets do zlib linha por linha. Existe uma maneira de fazer leitura linha por linha usando APIs de aumento?

questionAnswers(1)

yourAnswerToTheQuestion