Hablando de la serialización, me viene a la mente el boost serialization API. En cuanto a la transmisión de datos serializados a través de la red, usaría conectores de Berkeley o el asio library.
Editar:
Si desea realizar una serie de sus objetos a una matriz de bytes, puede utilizar el serializador impulso de la siguiente manera (tomado del sitio tutorial):
#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)
{}
};
serialización real es entonces bastante fácil:
#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
}
Deserialización funciona de forma análoga.
También hay mecanismos que le permiten manejar la serialización de punteros (estructuras de datos complejos como tress, etc. no son un problema), clases derivadas y puede elegir entre serialización binaria y de texto. Además, todos los contenedores STL son compatibles con la caja.
Eche un vistazo a [STLPLUS] [1], lib con implementación de persistencia. [1]: http: //stlplus.sourceforge.net/ – lsalamon
Consulte [google :: protobuf] (http://code.google.com/p/protobuf/), es una biblioteca muy sólida y rápida para la serialización binaria . Lo hemos usado con éxito con boost :: asio, etc. – Ketan
Las respuestas proporcionadas en realidad no explican * cómo * serializar. Uno ofrece la biblioteca de serialización de refuerzo, el otro explica los errores en una implementación ingenua. Como esta es la pregunta [tag: C++ - faq], ¿alguien puede responderla? –