如何将二进制数据写入压缩文件

How to write binary data to a compressed file

本文关键字:压缩 文件 数据 二进制      更新时间:2023-10-16

我有一些财务数据,我正在C++处理。我以简单的二进制格式存储它,因为它需要更少的资源并且速度很快,但是我想为文件添加压缩。我猜我将受到 IO 约束,因此压缩不会在处理速度方面花费我太多。

我不知道如何进行压缩,因为我是一名学者,而不是真正的程序员。我真的可以用一些手握住这个。

I have my data in a structure like this:
  struct TradesBin {
    int ttim;
    int prc;
    int siz;
    short int g127;
    short int corr;
    char cond[2];
    char ex[1];
}__attribute__((packed));

我可以按如下方式写入二进制文件:

ofstream fout(outfile.c_str(), ios::out | ios::binary);
fout.write((char *) &tbin, sizeof(TradesBin));

其中 tbin 填充了交易箱数据。

我现在如何为这些文件添加压缩? 我只模糊地听说过ZLO,Bzip2,zlib和Boost.IOStreams之类的东西。 非常感谢您的指导和建议!

谢谢!

Zlib 允许你这样做,但它只提供了一个普通的 C 接口。简而言之,你做到了

gzFile fp = gzopen(fname.c_str(),"wb");
gzwrite(fp, (void*) (&vec[0]), sizeof(TradesBin)*nelem);
gzclose(fp);

例如,vecTradesBin结构的std::vector<TradesBin>