¿Cómo leo datos de un fichero para guardarlos en un vector?

Iniciado por GominaTilted, 2 Enero 2019, 20:12 PM

0 Miembros y 1 Visitante están viendo este tema.

GominaTilted

Buenas, tengo un vector de tipo "struct", y necesito leer un fichero y que me guarde los datos en un vector. Asumo que tiene que ser algo de este estilo:


        Libro libro; //es mi struct
string nom_fichero = PracticaFinal_opcion1.libros.dat;

ifstream f;

f.open(nom_fichero);

if (f)
{
while (f >> ??) // el "??" indica que no sé que poner para que lea hasta el fin del fichero. NO PUEDO USAR .eof //
{
//aquí irían la propia lectura
}
}


Gracias :D

fary

Un byte a la izquierda.

GominaTilted

Sí, está con formato de C pero me vale. No había abierto el vídeo porque no me suelo fiar mucho de YT, pero el chaval lo explica bastante bien.

Cero++

Cita de: GominaTilted en  2 Enero 2019, 20:12 PM
Buenas, tengo un vector de tipo "struct", y necesito leer un fichero y que me guarde los datos en un vector. Asumo que tiene que ser algo de este estilo:


       Libro libro; //es mi struct
string nom_fichero = PracticaFinal_opcion1.libros.dat;

ifstream f;

f.open(nom_fichero);

if (f)
{
while (f >> ??) // el "??" indica que no sé que poner para que lea hasta el fin del fichero. NO PUEDO USAR .eof //
{
//aquí irían la propia lectura
}
}


Gracias :D

Buenas, espero te sea de ayuda, yo estoy aprendiendo actualmente, así que, tenlo en cuenta.

Para leer un archivo, eso depende del tipo que sea, si se trabaja con un archivo de texto o binario.
Suponiendo que es de texto, la sintaxis sería así:
Código (cpp) [Seleccionar]
struct Libro{
/*Algun string...*/
};
int main(int argc, char *argv[]) {
vector<Libro> V; Libro aux;
ifstream entrada;
entrada.open(/*Nombre del archivo*/);
if(!entrada.is_open()){
cerr<<"Archivo no encontrado"<<endl;
exit(-1);
}
while(entrada>>aux;){
V.push_back(aux);
}
entrada.close();
return 0;
}

Para leer, el archivo el cual vas a modificar, debes crear un auxiliar del mismo tipo que vas a leer (así me enseñaron) y utilizar el identificador de tu archivo, en este caso "entrada" para leer ese auxiliar y guardar ese mismo auxiliar en tu vector, el cual puedes modificar a tu antojo y ya luego cargar el archivo modificado o ver lo que contiene, que se yo   :xD
Obviamente el operador >> lo tengo sobrecargado.
PD: siempre que leas string con archivos, usa getline y el ignore(). Si no se borra el archivo, muy bien entendido no lo tengo todavía a ésta parte, tengo que indagar más sobre el funcionamiento de getline, lo digo por experiencia jaja
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]