1

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がTradesBinデータで満たされている場所。

これらのファイルに圧縮を追加するにはどうすればよいですか?ZLO、Bzip2、zlib、Boost.IOStreamsなどについては漠然としか聞いていません。私はあなたの指導と提案に感謝します!

ありがとうございました!

4

1 に答える 1

2

Zlib ではこれを行うことができますが、単純な C インターフェイスしか提供されていません。一言で言えば、あなたはそうします

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

vecたとえば、構造の a はどこになりstd::vector<TradesBin>ますTradesBinか。

于 2012-09-22T00:08:57.617 に答える