elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  manejo de archivos en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: manejo de archivos en C++  (Leído 3,195 veces)
mauroooooooo

Desconectado Desconectado

Mensajes: 1


Ver Perfil
manejo de archivos en C++
« 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


En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: manejo de archivos en C++
« Respuesta #1 en: 19 Abril 2012, 03:45 am »

Código
  1. expresion.clear();
No sirve para vaciar la variable, sino para vaciar el estado de error.
Para esto hacé lo siguiente:
Código
  1. expresion.str( "" );

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
  1. f.open ( "programar.txt", ifstream::in );
  2. if( !f.good ){
  3.     cout << "Error abriendo el archivo." << endl;
  4.     return false;
  5. }
  6. while ( !f.eof() ){
  7.     // hacer cosas
  8. }

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.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Manejo de archivos de texto
.NET (C#, VB.NET, ASP)
|Miguel| 0 1,550 Último mensaje 1 Mayo 2012, 17:02 pm
por |Miguel|
Duda sobre manejo de archivos
Programación C/C++
xogeid46 3 2,306 Último mensaje 19 Enero 2013, 05:48 am
por apuromafo CLS
manejo de archivos txt
Programación C/C++
flony 3 2,773 Último mensaje 12 Febrero 2013, 22:40 pm
por flony
[C] Manejo de archivos por dos equipos (No simultaneo) ~ Dropbox
Programación C/C++
Brandford 2 2,147 Último mensaje 1 Septiembre 2013, 09:16 am
por Brandford
Manejo de Archivos
Programación General
danndres 0 1,846 Último mensaje 25 Septiembre 2014, 02:38 am
por danndres
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines