SORU
7 ŞUBAT 2009, CUMARTESİ


Nasıl C bir nesne seri hale getirmek için ?

Soket bağlantısı üzerinden seri hale getirmek ve aktarmak için gereken nesnelerin küçük bir hiyerarşi var. Her iki nesne seri hale getirmek, neye dayanarak bu serisini gerek. C bunu yapmak için kolay bir yol var Java ' da olduğu gibi) var mı?

Kod örnekleri veya çevrimiçi öğreticiler herhangi bir C seri var mı?

DÜZENLEME:Açık olalım, bayt dizisine bir nesneye dönüştürme konusunda yöntem, bir nesne içine sonra geri arıyorum. Priz iletimi ile başa çıkabilirim.

CEVAP
7 ŞUBAT 2009, CUMARTESİ


Seri hale getirme, boost serialization API söz aklıma geliyor. Net üzerinden seri veri iletimi için, ya da Berkeley yuva veya asio library kullanmak istiyorum.

Düzenleme:
Eğer bir bayt dizisi için nesneleri seri hale getirmek istiyorsanız, bu destek şu şekilde seri hale getirici (öğretici sitesinden alınan) kullanabilirsiniz

#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
class gps_position
{
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & degrees;
        ar & minutes;
        ar & seconds;
    }
    int degrees;
    int minutes;
    float seconds;

public:
    gps_position(){};
    gps_position(int d, int m, float s) :
    degrees(d), minutes(m), seconds(s)
    {}
};

Gerçek seri hale getirme, sonra da oldukça kolaydır:

#include <fstream>
std::ofstream ofs("filename.dat", std::ios::binary);

    // create class instance
    const gps_position g(35, 59, 24.567f);

    // save data to archive
    {
        boost::archive::binary_oarchive oa(ofs);
        // write class instance to archive
        oa << g;
        // archive and stream closed when destructors are called
    }

Kaldırması benzer bir şekilde çalışır.

Ayrıca işaretçiler (ağaçları vb gibi karmaşık veri yapıları sorun vardır), türetilmiş sınıflar serileştirme halledeyim hangi mekanizmalar yok ve ikili ve metin serileştirme arasında seçim yapabilirsiniz. Tüm bunların yanında STL kapları kutunun dışında desteklenir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • Google Россия

    Google Ро

    9 Temmuz 2007
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011