2012-04-02 4 views
2

대용량의 데이터를 덤프해야합니다. 일반적으로 약 50GB 정도의 순서로 데이터를 덤프해야합니다. 코드가 실행되는 동안에는 대개 몇 주가 소요됩니다. 지금은 데이터를 legacy ASCII VTK 개의 파일로 내보내고 있습니다.C++의 압축 파일 IO

공간을 절약 할 수 있도록 디스크에 기록되는 데이터를 압축하는 방법이 있는지 궁금합니다. 동시에 여러 버전의 코드를 실행해야합니다. 가능한 경우 표준 라이브러리에서 무언가를 선호합니다. 당신이 부스트를 사용할 수 있는지

+1

, http://zlib.net/ – celtschk

답변

3

, 당신은 부스트를 사용하지 않는 경우 compressor and decompressor

#include <fstream> 
#include <iostream> 
#include <boost/iostreams/filtering_streambuf.hpp> 
#include <boost/iostreams/copy.hpp> 
#include <boost/iostreams/filter/zlib.hpp> 

int main() 
{ 
    using namespace std; 

    ifstream file("hello.z", ios_base::in | ios_base::binary); 
    filtering_streambuf<input> in; 
    in.push(zlib_decompressor()); 
    in.push(file); 
    boost::iostreams::copy(in, cout); 
} 
내가 ZLIB로 보는 게 좋을 것
+1

, 여전히 체크 아웃 ZLIB 필터 봐 zlib. 사용하기가 매우 쉽습니다. 그 짧은, 스택 오버플로 오른쪽에 적응성 허프만 인코더/디코더를 작성할 수, 너무 어렵지 않아. 표준 라이브러리 만 사용합니다 .-D –