Título: manejo de archivos en C++ Publicado por: mauroooooooo en 17 Abril 2012, 19:13 pm buenas, estoy tratando de crear una especie de compilador, este mismo lee un archivo linea por linea, en cada linea lee hasta que se encuentre un _ y lo guarda en una variable una vez que tengo la variable la comparo con otro y asi sucesivamente, hasta el momento ya pude hacer que lea hasta que se encuentre el _ y lo guarde en una variable para luego hacer la comparacion, pero no he podido limpiar la variable y hacer q salte de linea para seguir comparando, esto seria lo que llevo programado por el momento
void Compilar() { char palabra=1; string ruta=" ",abc=" ",compara="MOSTRAR_"; //variable de prueba system("cls"); MOSTRAR_ "Digite la ruta del archivo para compilar\n"; cin>>ruta; ifstream f; stringstream expresion; f.open ("programar.txt", ifstream::in); while (! f.eof() ) { while (f.good() && (palabra != '_') ) { palabra = f.get(); expresion << palabra; } while (expresion >> abc) { MOSTRAR_ abc<<"\n"; if(compara==abc) { MOSTRAR_ "Perfect Match" << endl; // este if es para ver si reconoce la variable copiada contra un string system("pause"); } } expresion.clear(); } f.close(); } utilice esta funcion while (! f.eof() ) pensando en que con eso iba a leer linea por linea y la funcion expresion.clear(); al final del while para que limpie y vuelva a leer pero no me funciono, agradeceria mucho su ayuda ya que soy un poco nuevo en esto, gracias Título: Re: manejo de archivos en C++ Publicado por: Beakman en 19 Abril 2012, 03:45 am Código No sirve para vaciar la variable, sino para vaciar el estado de error. Para esto hacé lo siguiente: Código
Después, yo siempre creo que está muy mal usar funciones/métodos void. Algún valor deberías retornar, y más cuando estás tratando con archivos. Por ejemplo, deberías validar que se haya abierto el archivo primero: Código
En cuanto al resto, trata de no usar tantos whiles. Del archivo de texto que abrís deberías tomar letra por letra hasta encontrar un espacio. En ese punto almacenas los valores que necesites, y continuas tomando caracteres. |