我有一些我在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。我非常感謝你的指導和建議!
謝謝!
Zlib是你想使用的,但不幸的是,使用它有點棘手,因爲它是以一種協同的方式運行的。當然,更簡單的是編寫平面文件,然後用壓縮方式壓縮它們。 –
Boost有一個[zlib過濾器](http://www.boost.org/doc/libs/1_40_0/libs/iostreams/doc/classes/zlib.html),它允許您在普通C++流的頂部使用zlib。但是,你確定你需要壓縮嗎? [不成熟的優化](http://c2.com/cgi/wiki?PrematureOptimization)和所有... – willglynn
@HotLicks:不需要協程。就在最近,我處理了大量簡單數字數據的代碼,我們讀取/寫入一串雙打。 –