Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: javier_SL en 19 Junio 2011, 21:15 pm



Título: Problema en C++ al leer archivo .txt
Publicado por: javier_SL en 19 Junio 2011, 21:15 pm
Hola, tengo un problema al leer un archivo de texto en c++, el programa que utilizo es el codeblocks.
 El programa debe leer un archivo de texto que contenga el siguiente tipo de líneas:

Motor 1-izquierda-Velocidad 50%
Motor 2-derecha  -Velocidad 50%
Motor 1-izquierda-Velocidad 50%.

Al cargarlo debe tomar en tres variables distintas el número de motor, el sentido y la velocidad.


Este es el programa: 

Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.    ifstream lector;
  9.    string motor[20];
  10.    string velocidad[20];
  11.    string sentido[20];
  12.    string linea;
  13.    int i;
  14.  
  15.  
  16.  
  17.    lector.open ("Modo Automatico.txt");
  18.  
  19.    if (lector.is_open()) {
  20.  
  21.        while(!lector.eof()) {
  22.  
  23.            getline(lector,linea);
  24.  
  25.            if (linea.length() >=10) {
  26.                cout<<linea;
  27.                motor[i]=(linea.substr (6,1));
  28.                sentido[i]=(linea.substr (8,9));
  29.                velocidad[i]=(linea.substr (18,13));
  30.  
  31.                }
  32.            else {
  33.  
  34.                cout<<"el archivo esta mal grabado"<<endl;
  35.                }
  36.  
  37.            cout<<motor[i]<<sentido[i]<<velocidad[i]<<endl;
  38.            i++;
  39.  
  40.        }
  41.  
  42.  
  43.  
  44.    }
  45.  
  46.  
  47.  
  48.  
  49.  
  50. return 0;
  51. }

El archivo Modo Automatico.txt, esta guardado en la carpeta del proyecto.

Cuando construyo y compilo el programa, el codeblocks no detecta ningún error.
Pero cuando lo ejecuto ocurre lo siguiente:




http://kn3.net/161857EE987JPG.html (http://kn3.net/161857EE987JPG.html)
http://kn3.net/05CD7DC5055JPG.html (http://kn3.net/05CD7DC5055JPG.html)
http://kn3.net/1767082208AJPG.html (http://kn3.net/1767082208AJPG.html)
http://kn3.net/12A6FE1D57AJPG.html
 (http://kn3.net/12A6FE1D57AJPG.html)


Bueno desde ya muchas gracias. :)



Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Danyel_Casvill en 19 Junio 2011, 21:45 pm
Hola, mira te falta la librería <string> y creo deberías cambiar esto
Código
  1. lector.open ("Modo Automatico.txt");

Por esto
Código
  1. ofstream lector("Modo Automatico.txt");
Y eliminar esto
Código
  1. ifstream lector;
Bueno y tienes mas errores pero dejemos que alguien mas te los diga xD


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: javier_SL en 20 Junio 2011, 00:21 am
gracias ahora voy a ver que onda


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Acermax en 20 Junio 2011, 01:38 am
Eso que dices dany, no es cierto.
El fichero lo quiere como lectura, asi que debe ser ofstream. ifstream se usa para escritura, y no es el caso. Por otro lado usar la opción open también es válido, igual que usarla en el constructor.

El problema, probablemente, es que no está inicializada la variable 'i'.


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: fantasma306 en 20 Junio 2011, 02:03 am
Eso que dices dany, no es cierto.
El fichero lo quiere como lectura, asi que debe ser ofstream. ifstream se usa para escritura, y no es el caso.

ifstream sirve para leer de un archivo (y es exactamente lo que quiere)
ofstream sirve para escribir en un archivo.

El problema, probablemente, es que no está inicializada la variable 'i'.
Esa es la solucion .


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Acermax en 20 Junio 2011, 02:32 am
Si, quería corregir a dany y al final escribí lo mismo que él, lo que tienen las prisas xD. Pero exactamente eso, ifstream es la lectura, y es lo que tiene bien, poner ofstream es lo que no tendría sentido.


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: kiriost en 20 Junio 2011, 03:27 am
Te recomiendo usar split para separar las variables:
http://www.google.com.ar/#hl=es-419&source=hp&q=c%2B%2B+string+split&oq=c%2B%2B+string+split&aq=f&aqi=g1&aql=&gs_sm=e&gs_upl=432l2434l0l16l11l0l2l2l0l401l2029l2-2.3.1l6&bav=on.2,or.r_gc.r_pw.&fp=72eab2ba1b785398&biw=1022&bih=663 (http://www.google.com.ar/#hl=es-419&source=hp&q=c%2B%2B+string+split&oq=c%2B%2B+string+split&aq=f&aqi=g1&aql=&gs_sm=e&gs_upl=432l2434l0l16l11l0l2l2l0l401l2029l2-2.3.1l6&bav=on.2,or.r_gc.r_pw.&fp=72eab2ba1b785398&biw=1022&bih=663)


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: javier_SL en 20 Junio 2011, 16:46 pm
lo que hice fue definir la variable i = 0, y el error ya no persiste.

kiriost , que es eso de separar las variables?.

muchas gracias a todos


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Danyel_Casvill en 20 Junio 2011, 17:00 pm
Por otro lado usar la opción open también es válido, igual que usarla en el constructor.

¿Para esto no es necesaria la libreria stdio?


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Acermax en 20 Junio 2011, 17:36 pm
No, todo pertenece a la librería fstream
http://www.cplusplus.com/reference/iostream/fstream/

Un saludo.


Título: Re: Problema en C++ al leer archivo .txt
Publicado por: Danyel_Casvill en 21 Junio 2011, 00:54 am
mmmm no se si ya allas resuelto el problema pero de casualidad encontre esto http://www.modelo.edu.mx/univ/virtech/prograc/cplus4.htm


Espero te sirva