c++ - 如何在 C++ 中逐行读取 .gz 文件?

标签 c++ compression gzip

我有 3 TB 的 .gz 文件,想在 C++ 程序中逐行读取其未压缩的内容。由于文件非常大,我想避免将其完全加载到内存中。

任何人都可以发布一个简单的例子吗?

最佳答案

您很可能不得不使用 ZLib 的 deflate,示例可从他们的 site 获得。

您也可以查看BOOST C++ wrapper

BOOST 页面中的示例(从文件中解压数据并将其写入标准输出)

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

int main() 
{
    using namespace std;

    ifstream file("hello.z", ios_base::in | ios_base::binary);
    filtering_streambuf<input> in;
    in.push(zlib_decompressor());
    in.push(file);
    boost::iostreams::copy(in, cout);
}

关于c++ - 如何在 C++ 中逐行读取 .gz 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201538/

相关文章:

c++ - 使用黑名单边缘提升过滤图

c++ - 在 ROOT 中绘制 ASCII 文件

android - 关于 Glide 库的详细信息

Windows CMD 文件/文件夹压缩使用 7z 或替代 .tar.gz

Python WhiteNoise 在 Flask 应用程序中不是 gzip 压缩

c++ - 使用 lambda 作为试运行选项正常吗?

c++ - 使用基于范围的 for 迭代临时 std::initializer_list

c# - 流式音频中的降噪和压缩

java GZIPInputStream 和 GZIPOutputStream 未按预期工作

python - 使用 python 从 .gz 文件中删除特定行(模式)以处理大文件