2011-04-13 21 views
5

İsteğe bağlı olarak verileri sıkıştırabilen bir sınıf için seri hale getirme işlevi yazmak istiyorum. Boost :: iostreams'de sunulan sıkıştırma olanaklarını kullanmak istiyorum. Bunu yapmayı bilen var mı? Bunu yapmak görebilirsinizYükseltme :: arşivi artırma ile kullanma :: Verileri sıkıştırmak için iostreams

struct X 
{ 
    X() {} 

    template<class Archive> 
    void serialize(Archive & ar, const unsigned int version) 
    { 
     ar & compression; 
     if(compression == 0) 
     { 
      ar & data; 
     } 
     else if(compression == 1) 
     { 
      // use boost::iostream compression 
      // facilities to serialize data 
     } 
    } 

    int compression; 
    std::vector<int> data; 
}; 

cevap

0

tek yolu ar.load_binary ve ar.save_binary kullanmak daha sonra ilk veriyi sıkıştırmak ve olduğunu. Verileri sıkıştırmak için, std :: ostringstream ile bir filtering_stream öğesini lavabo ve uygun bir sıkıştırma filtresi olarak kullanabilirsiniz.

Sıkıştırma işlemini yığının üstüne itmek istememenizin bir nedeni (yani, arşivinizi sıkıştırılmış bir akış üzerinden oluşturmak)?

İlgili konular