duda para un programita [resuelto]

Iniciado por flony, 30 Agosto 2014, 05:24 AM

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

flony

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
}
}
}
si un problema no tiene solucion entonces no es un problema...es algo inevitable

ZeroVzla

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
  }

ecfisa

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

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

flony

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.
si un problema no tiene solucion entonces no es un problema...es algo inevitable