Test Foro de elhacker.net SMF 2.1

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
Citarpepe
luis
juan
jose
carlos
raul
flony
a un vector string [6], mas o menos mi idea era
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 (cpp) [Seleccionar]

  for (int i = 0; i < 7; i++)
  {
      getline(MiArchivo, candidatosTxt [i]);
  }

  //tambien
  for (int i = 0; i < 7; i++)
  {
      getline(MiArchivo, linea);
      candidatosTxt [i] = linea; // aca el error
  }
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 (cpp) [Seleccionar]

void leer_txt(char *txtName) {
 std::vector <std::string> v;
 std::string line;
 std::ifstream is(txtName, std::ifstream::in);

 while(!is.eof()) {
   getline(is, line);
   v.push_back(line);
 }
...


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 (cpp) [Seleccionar]
while (getline(is, line))
   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.