Problema en C++ al leer archivo .txt

Iniciado por javier_SL, 19 Junio 2011, 21:15 PM

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

javier_SL

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/05CD7DC5055JPG.html
http://kn3.net/1767082208AJPG.html
http://kn3.net/12A6FE1D57AJPG.html



Bueno desde ya muchas gracias. :)


Danyel_Casvill

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
adada

javier_SL


Acermax

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'.

fantasma306

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 .
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.

Acermax

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.

kiriost

http://www.godsys.com.ar > Programación. Hacking y Cracking. Sistemas. Desarrollo Web.
Java, C/C++, PHP, Python, Perl, HTML, Game-Hacking, Defacing, Desarrollo Web, GNU/Linux, y más

javier_SL

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

Danyel_Casvill

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?
adada

Acermax