Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


caracteres

Preguntas y respuestas sobre el lenguaje de programacion C/C++

caracteres

Notapor nyta el Mié Mar 14, 2007 8:35 pm

wenas, tengo algun problemilla con un programa en c++, la cuestion es que necesito que lea un txt y que lo haga todo caracter a caracter, incluyendo saltos de linea.

La cabecera de la funcion es:
void leer(istream &fd)

El problema es que no puedo usar ni getline, ni cin, ni nada de eso, porque necesito que me reconozca los espacios y los saltos de linea. Por lo tanto necesito que lea las palabras pero caracter a caracter.

while ( fd.getline(cadena,TALLA)){
cout <<endl>> buffer2)
//Funcion2
}
Con este codigo funciona, pero le pega varios repasos y justo lo que necesito es que con uno sobre y lo haga lo mas rapido posible.

Weno soy nueva por aqui asi que imagino que me faltara algun dato que añadir para que me podais ayudar, pero weno, siempre se puede añadir algo de info.

Thx a todos =P
nyta
Novato
Novato
 
Mensajes: 5
Registrado: Mié Mar 14, 2007 8:33 pm

Re: caracteres

Notapor yalmar el Jue Mar 15, 2007 6:49 pm

Hola,

imagino que seria algo como:

Código: Seleccionar todo
char c;
ifstream in(filename)
while (!in.eof()){
  in>>c;
  switch(c){
   case ' ': { //do anything}
   case '\n': ...
}



salu2
Avatar de Usuario
yalmar
Programador Experimentado
Programador Experimentado
 
Mensajes: 251
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

RE:Caracteres

Notapor nyta el Vie Mar 16, 2007 9:19 am

Hola, gracias por la contestacion, he probado a hacerlo como has puesto, y de esa manera no detecta ni los saltos de linea, ni los espacios, ya que el operador ">>", aunque sea caracter a caracter, no detecta esos caracteres y los salta...

He intentado hacerlo con fd.get(c) (Donde c es un char), pero no me sale.

¿Alguna solucion?

Gracias otra vez :)
nyta
Novato
Novato
 
Mensajes: 5
Registrado: Mié Mar 14, 2007 8:33 pm

Re: caracteres

Notapor latindeveloper el Vie Mar 16, 2007 11:49 am

Puede funcionar con tu codigo inicial:

Código: Seleccionar todo
while ( fd.getline(cadena,TALLA))
{
   ...
}


Solo que tendrías que procesar cada caracter de la cadena.

Código: Seleccionar todo
while ( fd.getline(cadena,TALLA))
{
   for(int i = 0 ; i < strlen(cadena);i++)
   {
         char car = cadena[i];
         cout<<car<<endl;
   }
}
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

gracias

Notapor nyta el Vie Mar 16, 2007 11:59 am

gracias por la respuesta.

De todas maneras, eso lo habia hecho de otra manera (haciendo getline hasta el '\n', y luego procesando esa cadena con getline, pero con caracter separador de espacio, algo asi getline(cadena,LONG,' ') haciendo istringstream.

Pero de la maneras que tu dices, (que gracias por tomarte la molestia de mirarlo) sigues haciendo 2 pasadas a la cadena, y procesas el doble de informacion.

Lo que me interesa es que solo pase una vez por cada letra...necesito eficiencia total.

Muchisimas gracias de nuevo a todos :)
nyta
Novato
Novato
 
Mensajes: 5
Registrado: Mié Mar 14, 2007 8:33 pm

Re: gracias

Notapor latindeveloper el Vie Mar 16, 2007 12:20 pm

entonces no utilices las librerías iostream.

Código: Seleccionar todo
FILE *file = fopen(....);
char c;
while((c = fgetc(file)) != EOF)
{
    ...
}
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Proabre :)

Notapor nyta el Vie Mar 16, 2007 3:30 pm

Ok, ahora mismo no estoy en mi ordenador, en cuanto pueda lo pruebo y os comento...

Muchas gracias a todos de nuevo por la atencion :)
nyta
Novato
Novato
 
Mensajes: 5
Registrado: Mié Mar 14, 2007 8:33 pm

FUNCIONA !

Notapor nyta el Dom Mar 18, 2007 11:22 am

Funciona. muchas gracias a todos !
;)[/i]
nyta
Novato
Novato
 
Mensajes: 5
Registrado: Mié Mar 14, 2007 8:33 pm


Volver a C/C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados