[Jde-dev] Serializar un std:vector a fichero

David Lobato dav.lobato en gmail.com
Mie Ene 27 20:51:17 CET 2010


Tenemos alguna solución sobre este asunto??

2010/1/25 David Lobato <dav.lobato en gmail.com>

> Joe, que cabeza la mia, perdona que no respondiese la anterior sobre los
> BLOBS, se me ha pasado.
>
> Así, sin probar nada, yo diria que hacer un memmove del std::vector
> directamente es peligroso, ya que una vez serializado el objeto, la
> representación ya no es portable, desde luego no entre máquinas y quizá
> tampoco entre versiones de la libstdc++.
>
> Yo cogería los datos 'a pelo', los serializaría y para recuperarlos crearía
> un vector nuevo inizializandolo con los datos leidos desde fichero.
>
> Para serializar si tienes:
>
> std::vector<int> v;
>
> Puedes acceder a los datos así:
>
> &v[0]
>
> Según la stl se almacenan de manera contigua, por lo que con dicha
> operación obtienes un 'int*'.
> Usando la operación size del vector puedes obtener la longitud del vector y
> usarlo en un write() o en un memmove()
>
> Para 'desserializar':
>
> Primero lees el 'int*' e inicializas el vector así:
>
> int *arrayInt;
> std::vector<int> v (arrayInt, arrayInt + nElements );
>
> Por int pon el tipo de datos que quieras, teniendo en cuenta que para
> serializarlo/desserializarlo necesitaras algún mecanismo (write/read).
>
> Espero que sea de ayuda.
>
> David.
> 2010/1/25 Roberto Calvo <rocapal en libresoft.es>
>
>
>> Buenas
>>
>> David, tienes por ahí o se te ocurre la mejor manera para serializar un
>> std:vector de bytes a fichero?
>>
>> Ayer me tiré como 2 horas probando diferentes maneras, y me daban todas
>> siempre violación cuando intentaba leer el fichero. Al menos el fichero
>> parecía estar bien, ya que tenía los mismo bytes del std:vector que
>> quiero guardar.
>>
>> Grachie!
>>
>> --
>> Roberto Calvo Palomino          | Libre Software Engineering Lab (GSyC)
>> Tel: (+34) 91 488 85 23         | Universidad Rey Juan Carlos
>> rocapal en libresoft.es            | Edif. Departamental II - Despacho 116
>> http://libresoft.es/            | c/Tulipán s/n 28933 Móstoles (Madrid)
>>
>> GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100127/58718de5/attachment.htm 


More information about the Jde-developers mailing list