Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problemas con caracteres

Estas en el tema de problemas con caracteres en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 14/03/2007, 19:32
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 1 mes
Puntos: 0
problemas con caracteres

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;
istringstream fichlin(cadena);
fichlin.getline(buffer,TALLA)
//Funcion 1;
while(fichlin >> 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
  #2 (permalink)  
Antiguo 14/03/2007, 20:39
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: problemas con caracteres

No se pero creo que getc() de C te le un caracter sea este cualquiera, incluyendo el salto de linea, las tabulaicones, los retrocesos, espacioes, etc.

Segun recuerdo, cin tiene algunas opciones para hacer que te lea todo, es decir que incluya lo antes mencionado. Habria namas que investigar todos los metodos de cin .

Saludos
  #3 (permalink)  
Antiguo 15/03/2007, 02:06
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Re: problemas con caracteres

Hola Nyta, no sé si ya probaste el método get.

Aquí tienes algo de referencia:

cppreference.com/cppio/index.html

Saludos.
  #4 (permalink)  
Antiguo 15/03/2007, 03:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: problemas con caracteres

Muchas gracias a los dos, acabo de levantarme y voy a ponerme con ello otra vez a ver si consigo que funcione... estoy del programa este... ú_ù

:3
  #5 (permalink)  
Antiguo 15/03/2007, 07:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 3
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: problemas con caracteres

void leer (istream &fd){

const int TALLA = 512;
char temp;
//Temporal la verdad se podria ahorrar, pero por si acaso...
char temporal[TALLA],buffer[TALLA],buffer2[TALLA];
int i = 0;
int ini = 1; //Para detectar si es la primera de la frase, despues de '\n'


while (fd.get(temp)){
temporal[i] = temp;
//Si esta separada por un espacio...
if (temporal[i] == ' '){
temporal[i] = '\0';
strcpy (buffer2,temporal);
//Y es la primera
if (ini == 1){
cerr << "Aqui funcion(<INICIO> << ", " << buffer2 << ")" << endl;
i = 0;
ini = 0; //Para la proxima que detecte espacio, no sera la primera
}
//O no es la primera
else {
strcpy(buffer,buffer2) //Copia en buffer, buffer 2
cerr << "Aqui funcion( << buffer << ", " << buffer2 << ")" << endl;
i = 0;
}
}
else if (temporal[i] == '\n'){
buffer2[i] = '\0';
cerr << "Aqui funcion( << buffer << ", " << buffer2 << ")" << endl;
i = 0;
ini = 1; //La siguiente sera la primera
}
else i++; //Sigue avanzando y almacenando caracteres de la palabra
}//Fin while
}


Weno ese es el codigo que me esta volviendo loca... ya no se que mas hacerle he probado con todo lo que se me ocurria... lo pongo a ver si alguno me puede ayudar porque estoy desesperada ya... a este paso tiro la torre por la ventana...

Si alguno lo consigue le estare eternamente agradecida... Gracias de antemano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:52.