逐行读取gzip文件

问题描述 投票:0回答:1

我有一个在c#中用GZipStream创建的gz文件。

我试图用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 始终是空的。上面的代码有什么问题?

c++ boost zlib
1个回答
0
投票

问题是,我使用了 boost::iostreams::zlib_decompressor() 而不是 boost::iostreams::gzip_decompressor()。

© www.soinside.com 2019 - 2024. All rights reserved.