elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:29  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Leer todas líneas de un fichero C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Leer todas líneas de un fichero C++  (Leído 6,291 veces)
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Leer todas líneas de un fichero C++
« en: 8 Noviembre 2008, 16:47 »

Hola amig@s, tengo un archivo y quiero leer las líneas, pero con la función getline, sólo me lee todo el rato la primera línea, y quisiera guardarlas todas para luego manejarlas. Tengo hecho esto:

char * nombre= new char[10];
char * apellido1= new char[10];
char * apellido2= new char[10];

   ifstream leer;
   leer.open("fichero.txt");

while(!leer.eof())
{
leer.getline(numero,50,';');
     //   leer.getline(nombre,50,';');
      //leer.getline(result,50,'\n');



   LabelLeer->Caption=numero;


En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #1 en: 8 Noviembre 2008, 16:50 »

Esto es el código que tengo:



char * nombre= new char[10];
char * apellido1= new char[10];
char * apellido2= new char[10];

   ifstream leer;
   leer.open("fichero.txt");

while(!leer.eof())
{
                  leer.getline(nombre,50,';');
     leer.getline(apellido1,50,';');
                  leer.getline(apellido2,50,'\n');
}

Y si visualizao nombre, es todo el rato el de la primera línea, me podría ayudar?

Muchas gracias.
   


En línea
Anibal784


Desconectado Desconectado

Mensajes: 762

Yo no la vote, pero me la tengo que aguantar igual


Ver Perfil WWW
Re: Leer todas líneas de un fichero C++
« Respuesta #2 en: 8 Noviembre 2008, 18:22 »

   No se bien cuál es tu problema, no se entiende. Pero por lo pronto leete bien qué es lo que hace getline.
En línea

El que llega sin que lo llamen, se va sin que lo echen.

Citar
Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
GroK


Desconectado Desconectado

Mensajes: 680


...I have become comfortably numb...


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #3 en: 8 Noviembre 2008, 19:25 »

Tu problema esta en que, cuando termines de leer una linea, guardar los datos en un vector o array contenedor, que contenga los nombres y apellidos de cada una de las lineas que leiste; si no, en cada iteracion del bucle te va a machacar lo que tenian esas variables.

Saludos
En línea

"I put on my Hendrix album and my son said 'Dad, who's that?' and i said 'Well son, that's God' "- Robert Plant

savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #4 en: 10 Noviembre 2008, 12:44 »

Hola, hago esto pero tampoco funciona:

   while (leer.eof())
   {
      leer.getline(&nombre,10,';');
      leer.getline(&apellido1,10,';');
      leer.getline(&apelledo2,10,'|n');
      i++;
   }
   LabelLeer->Caption=nombre[5];

Quiero leer un archivo txt donde tengo una forma así:

Nombre1;Apellido11;Apellido21
Nombre2;Apellido12;Apellido22
Nombre3;Apellido13;Apellido23
...

Y quiero leer cada línea y almacenarlo en alguna cadena como esa, pero no me salen. Les agradezco si me podría ayudar. Gracias.

En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #5 en: 10 Noviembre 2008, 12:49 »

Perdón por el post anterior hay un error que me di cuenta, que al pegar no se pegó bien:

   while (leer.eof())
   {
      leer.getline(&nombre [ i ] ,10,';');
      leer.getline(&apellido1 [ i ] ,10,';');
      leer.getline(&apelledo2 [ i ] ,10,'|n');
      i++;
   }
   LabelLeer->Caption=nombre[5];
En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #6 en: 10 Noviembre 2008, 12:50 »

Pero tampoco funciona, cuando visualizo el nombre en la posición 5, nada, salen caracteres extraños.

Gracias.
En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #7 en: 10 Noviembre 2008, 14:41 »

Hola.

Creo que el problema está con el while, porque creo que no hace nada con él.

while (!leer.eof()), es decir, que el eof no lo encuentra o algo cuando lee el fichero, porque lo otro por separado funciona para leer cada campo de la primera línea, pero el resto haciendo esto del while, no lee nada, de hecho me da error de ejecución.

Si ven el error claro, les agradezco me digan.Gracias.
En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #8 en: 11 Noviembre 2008, 13:06 »

Hola, les comento sobre el programa un nuevo avance:

char * nombre= new char[20];
   char * apellido1= new char[20];
   char * apellido2= new char[20];

   int i;


   ifstream leer;
   leer.open("fichero.txt", ios::in);

   if(leer.fail())
   cout<<Error al abrir el archivo fichero.txt";
   else
   {
      while(!leer.eof())
      {
         leer.getline(&nombre [ i ],20,';');
         leer.getline(&apellido1 [ i ],20,';');
         leer.getline(&apellido2 [ i ],20,'\n');
         i++;
      }
   leer.close();
   }

Cuando visualizo nombre me aparecen las primeras letras de cada nombre, de modo que si en el fichero tengo:

Pepe
Juan
Lucía

me aparece PJL, cuando visualizo el nombre por ejemplo.

¿Sabrían cuál es el problema? ¿Cómo almaceno el nombre entero de cada fila y no la primera letra de cada uno?
Gracias.
En línea
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #9 en: 11 Noviembre 2008, 13:23 »

Buenas

Trata usando un char ** y hace las modificaciones necesarias para eso.

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #10 en: 11 Noviembre 2008, 13:37 »

Gracias FreakMind, usé esto, pero ahora cuando visualizo para leer no me muestra nada, si sólo leo la primera línea bien, pero ya cuando uso el bucle while no me muestra nada, hay algún error?:

               char** nombre;
   char** apellido1;
   char** apellido2;
   int maxWords = 10;
   nombre= new char*[maxWords];
   apellido1= new char*[maxWords];
   apellido2= new char*[maxWords];
   int i;
   int j=0;

   for(i=0; i<maxWords; i++)
   {
      numero [ i ]="______________";
      nombre [ i ]="______________";
      result [ i ]="______________";
   }//Esto lo hago porque si no lo inicializo , luego no me lee nada o a trozo solo



   ifstream leer;
   leer.open("fichero.csv", ios::in);

   if(leer.fail())
   Label1->Caption="Error al abrir el archivo fichero.csv";
   else
   {
   j=0;
    while(!leer.eof())
   {

         leer.getline(nombre [ j ],20,';');
         leer.getline(apellido1 [ j ],20,';');
         leer.getline(apellido2 [ j ],20,'\n');
         j++;
         

     }
En línea
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 184



Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #11 en: 11 Noviembre 2008, 13:49 »

Buenas
Código
   nombre= new char[maxWords][20];
  apellido1= new char[maxWords][20];
  apellido2= new char[maxWords][20];

Fijate si con eso te funciona

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #12 en: 11 Noviembre 2008, 13:54 »

Gracias Freak.Me aparece esto:

[C++ Error] Unit1.cpp(163): E2034 Cannot convert 'char ( *)[20]' to 'char * *'
En línea
savanibi

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Leer todas líneas de un fichero C++
« Respuesta #13 en: 11 Noviembre 2008, 20:35 »

Ya lo conseguí.
Gracias Freak, como lo de nombre=new char [10][20] que me djiste no me funcionó (creo que no usaría bien la reserva dinámica) lo hice estáticamente como char nombre[10][20] y así funciona.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer y manipular fichero.txt en C.
Programación C/C++
tvirus 1 1,781 Último mensaje 8 Diciembre 2010, 23:00
por JuszR
Error al leer un fichero de texto en Python « 1 2 »
Scripting
CaronteGold 17 2,975 Último mensaje 20 Diciembre 2010, 20:26
por CaronteGold
Leer un archivo .txt y separar las primeras 3 lineas en 3 variables distintas
Programación Visual Basic
extreme69 10 2,391 Último mensaje 22 Junio 2011, 04:34
por raul338
Leer fichero csv
Programación C/C++
gonzalo_C 0 355 Último mensaje 20 Febrero 2012, 17:32
por gonzalo_C
Problemas con salto de lineas al leer un fichero
Programación C/C++
petrusqui 4 258 Último mensaje 4 Abril 2012, 20:11
por cassiel83
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines