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:
#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. :)
Hola, mira te falta la librería <string> y creo deberías cambiar esto lector.open ("Modo Automatico.txt");
Por esto
ofstream lector("Modo Automatico.txt");
Y eliminar esto
ifstream lector;
Bueno y tienes mas errores pero dejemos que alguien mas te los diga xD
gracias ahora voy a ver que onda
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'.
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 .
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.
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)
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
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?
No, todo pertenece a la librería fstream
http://www.cplusplus.com/reference/iostream/fstream/
Un saludo.
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