Чтение gziped файла построчно - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть файл gz, который был создан в c# с помощью GZipStream.

Я пытаюсь прочитать его в c ++ построчно.

Вот код, который я использую

#include <iostream>
#include <fstream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <sstream>


int main()
{
    using namespace std;

    ifstream file(R"(path-to-my-file.gz)", ios_base::in | ios_base::binary);
    boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
    in.push(boost::iostreams::zlib_decompressor());
    in.push(file);
    std::istream incoming(&in);
    string line;
    while(true)
    {
        getline(incoming, line);
        cout << "line:"<<line << endl;
        cin.get();
    }
}

Я скачал zlib с https://www.zlib.net/ и восстановил буст с помощью b2 -sZLIB_SOURCE="G:\c++source\zlib-1.2.11".

Проблема в том, что line всегда пуст. Что не так с кодом выше?

1 Ответ

0 голосов
/ 29 апреля 2020

Проблема была в том, что я использовал boost :: iostreams :: zlib_decompressor () вместо boost :: iostreams :: gzip_decompressor ()

...