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));
: tbin이 TradesBin 데이터로 가득
ofstream fout(outfile.c_str(), ios::out | ios::binary);
fout.write((char *) &tbin, sizeof(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 : 코 루틴은 필요하지 않습니다. 방금 최근에 (큰) 양의 간단한 숫자 데이터에 대해 이와 같은 코드를 다루었습니다. 여기서 우리는 double 값을 읽고 쓰고 있습니다. –