作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些用 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 允许你这样做,但它只提供一个普通的 C 接口(interface)。简而言之,您可以
gzFile fp = gzopen(fname.c_str(),"wb");
gzwrite(fp, (void*) (&vec[0]), sizeof(TradesBin)*nelem);
gzclose(fp);
哪里vec
例如 std::vector<TradesBin>
为你的 TradesBin
结构。
关于c++ - 如何将二进制数据写入压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539585/
我是一名优秀的程序员,十分优秀!