Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GominaTilted en 2 Enero 2019, 20:12 pm



Título: ¿Cómo leo datos de un fichero para guardarlos en un vector?
Publicado por: 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:

Código:
        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


Título: Re: ¿Cómo leo datos de un fichero para guardarlos en un vector?
Publicado por: fary en 2 Enero 2019, 21:39 pm
Quizás esto te ayude...

hC2lrn81eco

saludos.


Título: Re: ¿Cómo leo datos de un fichero para guardarlos en un vector?
Publicado por: GominaTilted en 2 Enero 2019, 21:54 pm
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.


Título: Re: ¿Cómo leo datos de un fichero para guardarlos en un vector?
Publicado por: Cero++ en 4 Enero 2019, 03:19 am
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:

Código:
        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
  1. struct Libro{
  2. /*Algun string...*/
  3. };
  4. int main(int argc, char *argv[]) {
  5. vector<Libro> V; Libro aux;
  6. ifstream entrada;
  7. entrada.open(/*Nombre del archivo*/);
  8. if(!entrada.is_open()){
  9. cerr<<"Archivo no encontrado"<<endl;
  10. exit(-1);
  11. }
  12. while(entrada>>aux;){
  13. V.push_back(aux);
  14. }
  15. entrada.close();
  16. return 0;
  17. }
  18.  
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