Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: flony en 30 Agosto 2014, 05:24 am



Título: duda para un programita [resuelto]
Publicado por: flony en 30 Agosto 2014, 05:24 am
hola gente alguien me podria decir si se puede pasar de un txt
Citar
pepe
luis
juan
jose
carlos
raul
flony
a un vector string [6], mas o menos mi idea era
Código:
void leer_txt()
{
string linea;
string candidatosTxt [6];
ifstream MiArchivo ("votos.txt");
if (MiArchivo.is_open())
{
for (int i = 0; i < 7; i++)
{
candidatosTxt [i] = getline(MiArchivo, linea); // aca el error
}
}
}


Título: Re: duda para un programita
Publicado por: ZeroVzla en 30 Agosto 2014, 05:42 am
Buen día,

Creo que es porque getline no devuelve la línea, la guarda en la variable que le pasas por el segundo parámetro. Si dices getline(MiArchivo, linea); entonces el valor se guardará en linea, por lo que debería ser:

Código
  1.  for (int i = 0; i < 7; i++)
  2.  {
  3.      getline(MiArchivo, candidatosTxt [i]);
  4.  }
  5.  
  6.  //tambien
  7.  for (int i = 0; i < 7; i++)
  8.  {
  9.      getline(MiArchivo, linea);
  10.      candidatosTxt [i] = linea; // aca el error
  11.  }
  12.  


Título: Re: duda para un programita
Publicado por: ecfisa en 30 Agosto 2014, 11:02 am
Hola flony.

Pero de ese modo el código queda muy dependiente de la cantidad de líneas que tenga el archivo...

Me parece que sería mas flexible de este modo:
Código
  1. void leer_txt(char *txtName) {
  2.  std::vector <std::string> v;
  3.  std::string line;
  4.  std::ifstream is(txtName, std::ifstream::in);
  5.  
  6.  while(!is.eof()) {
  7.    getline(is, line);
  8.    v.push_back(line);
  9.  }
  10. ...
  11.  

Saludos


Título: Re: duda para un programita
Publicado por: rir3760 en 30 Agosto 2014, 18:04 pm
En la mayoria de los casos (por ejemplo este) se puede evitar el uso de la funcion feof, en su lugar se verifica el resultado de la funcion utilizada:
Código
  1. while (getline(is, line))
  2.   v.push_back(line);

Un saludo


Título: Re: duda para un programita
Publicado por: flony en 31 Agosto 2014, 20:26 pm
gracias a todos por darme una mano :)
ZeroVzla tenias razón era así, ecfisa me hiciste acordar que con <vector> se puede devolver la función y no dependería de una "x" cantidad de lineas, y rir3760 esa parte no la sabia.