Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream lector;
    string motor[20];
    string velocidad[20];
    string sentido[20];
    string linea;
    int i;



    lector.open ("Modo Automatico.txt");

    if (lector.is_open()) {

        while(!lector.eof()) {

            getline(lector,linea);

            if (linea.length() >=10) {
                cout<<linea;
                motor[i]=(linea.substr (6,1));
                sentido[i]=(linea.substr (8,9));
                velocidad[i]=(linea.substr (18,13));

                }
            else {

                cout<<"el archivo esta mal grabado"<<endl;
                }

            cout<<motor[i]<<sentido[i]<<velocidad[i]<<endl;
            i++;

        }



    }





return 0;
}


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 (cpp) [Seleccionar]
lector.open ("Modo Automatico.txt");
Por esto
Código (cpp) [Seleccionar]
ofstream lector("Modo Automatico.txt");
Y eliminar esto
Código (cpp) [Seleccionar]
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
Cita de: 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.

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

Cita de: Acermax en 20 Junio 2011, 01:38 AM
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
Cita de: Acermax en 20 Junio 2011, 01:38 AM
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