Mensaje
Estimado jmicanovelles,
Con fecha jueves, 27 de mayo de 2004, 20:43:15, escribió:
Hola:
j> No se si a todos os ocurre lo mismo, pero al introducir literales
j> en algun programa de consola, aparece otro signo. Un día hice un
j> comentario al enviar alguno de los ejercicios a c.conclase.net y
j> Salvador me dijo que no ocurría nada raro con la eñe, pero a mi si
j> me ocurre, al compilar el programa.
Creo que no entendí tu pregunta correctamente. Me preguntabas en ese
mensaje que "qué pasaba con los acentos", y yo entendí que era al leer
los datos, no al mostrar los mensajes en pantalla. Siento el
malentendido.
Efectivamente, cuando se programa en Windows para consola, los
acentos, y las eñes, no salen correctamente. Esto es porque la consola
usa un juego de caracteres diferente que el resto de Windows (ignoro
el motivo, y si se puede configurar de otro modo, todos mis intentos
en ese sentido han fracasado).
Hay dos posibilidades para solucionar esto:
1) Usar un editor de consola para editar el fichero fuente. (Como el
EDIT de MS-DOS).
2) Usar funciones del API para "traducir" las cadenas con acentos al
conjunto de caracteres de consola:
Hay que recordar que los programas de consola siguen siendo programas
Windows, y por lo tanto pueden acceder al API. Windows usa un juego de
caracteres por defecto para la consola de 8 bits, los primeros, del 32
al 127 son siempre los mismos: el código ASCII de 7 bits. El resto
depende de la página de códigos que esté activada, por defecto se
activa una que no dispone de caracteres acentuados ni ñ.
Podríamos usar un juego de caracteres de 16 bits, pero no es
necesario, bastará con usar una función del API para conversión de
cadenas entre el código ANSI y el OEM: CharToOem
Veamos un ejemplo:
----8<------
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
char cad[25];
cout << "áéíóú" << endl;
CharToOem("áéíóú", cad);
cout << cad << endl;
cin.get();
return 0;
}
----8<------
Por supuesto, esto nos obliga a almacenar en variables todas las
cadenas de nuestro programa y a convertirlas antes de usarlas, pero
nos asegura que siempre obtendremos el mismo resultado.
j> Si declaro una variable con el código ascii 164, creo que es,
j> entonces si me aparece.
Es otra opción, pero de momento no dispongo de soluciones generales.
j> Cuando uso el API, entonces si aparece.
En ese caso, tanto el editor de Dev-C++ como el programa que creas son
aplicaciones GUI, y por lo tanto, usan el mismo conjunto de
caracteres.
Hasta pronto.
--
Saludos,
Salvador mailto:salvador@conclase.net
Con Clase: http://www.conclase.net
====================================================================<<<
Whatever you Wanadoo, click below
This email has been checked for most known viruses find out more here
http://ads.smartgroups.com/adclick/CID=00000093c79a99a500000000
====================================================================>>>
If you want to share pictures, use the calendar, or start a questionnaire
visit http://www.es.smartgroups.com/groups/c-con-clase
To leave the group, email: c-con-clase-unsubscribe@smartgroups.com