C/Visual C - no puedo sacar std::vector de un archivo binario

 
Vista:

no puedo sacar std::vector de un archivo binario

Publicado por Jose (5 intervenciones) el 15/09/2008 20:57:42
Buenos dias:

disculpen comunidad tengo una pregunta sobre lo siguiente:

//declaro un vector de 5 elementos de tipo Lista (la hice con structs y es doblemente enlazada para que haga los ingresos en orden según la cadena que meta)

std::vector<Lista>* Lvector = new std::vector<Lista>(3);

// la lista tiene su método para agregar " void Lista::add(char p1[ ], int p2[ ]) "
// a continuación voy agregando 3 datos al vector

Lvector->at(0).add("uno",1);
Lvector->at(1).add("dos",1);
Lvector->at(2).add("tres",3);

luego que hago esto lo que quiero es meterlo en un archivo binario

// Arch es el archivo

fwrite( Lvector , sizeof(Lvector) , 1 , Arch );

// luego que he cerrado el archivo lo abro e intento leerlo.

std::vector<Lista>* Rvector = new std::vector<Lista>();

fread( Rvector , sizeof(Rvector) , 1 , Arch);

pero me sale el siguiente error en tiempo de ejecución

terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Aborted
*** Exited with status: 134 ***

uso KDevelop 3.5.3

ala porfa ayuda pelase que llevo algunos dias haciendo de todo para que me corra y no me corre, gracias por su atencion comunidad.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:no puedo sacar std::vector de un archivo binari

Publicado por Tom (619 intervenciones) el 16/09/2008 10:03:21
Bueno, quizás alguien aclare el tema un poco más, pero en principio me da la impresión de que Lvector no es más que un puntero por lo que cuando lo escribes en un fichero, sólo escribes eso, una dirección de memoria.

Pon una traza que te indique, por ejemplo, sizeof(Lvector).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no puedo sacar std::vector de un archivo binari

Publicado por Jose (5 intervenciones) el 17/09/2008 04:01:40
buen día Tom:

Si, la traza que me mencionas la pongo cuando escribo el archivo, asi

fwrite( Lvector , sizeof(Lvector) , 1 , Arch );

alli le digo que mande el Lvector al archivo y que el archivo este conciente que sera de tamaño sizeof(Lvector), bueno ahora que lo mencionas con respecto a que es un puntero he puesto sizeof(Lvector *), pero nada... lo mismo sucede.

gracias por responderme. Saludos cordiales, exitos en las labores que realices
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar