¿Cómo puedo mostrar por pantalla caracteres especiales (como á, é, ü, etc.) en un programa de consola en C++?
Saludos y gracias
| ||||
Caracteres especiales en C++ ¿Cómo puedo mostrar por pantalla caracteres especiales (como á, é, ü, etc.) en un programa de consola en C++? Saludos y gracias
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Y si utilizas Linux, cuando hagas un cout << , los caracteres que le indiques son los q saca.
__________________ Hi ha gent a qui no agrada que es parle, s'escriga o es pense en català. És la mateixa gent a qui no els agrada que es parle, s'escriga o es pense. |
| ||||
Bueno, os comento que es bajo windows, el programa que uso es el Dev C++ 4 ¿Entonces como debería escribir, p. ej., la palabra "avión"? cout << "avi"; printf("%c", xxx); <---- Poner ahí el código de ó cout << "n"; ¿Así o de otra forma? Saludos y gracias
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Si, la otra es que investigues el valor ASCII de "¨®", suponiendo que sea 123 lo puedes hacer es escribir "avi [alt]+123 n" ( "[]" significa tecla). No importa que caracter veas en windows (puede ser ¨g) en DOS ser¨¢ la "¨®", eso es m¨¢s sencillo. Saludos
__________________ Friedrich Nietzsche |
| ||||
Oye, pues no lo consigo. ¿Me podrías adaptar esta línea? cout << "avión"; ¿Cómo sería? La ó es el ASCII número 162 Saludos y gracias
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Se me hace que lo estas haciendo desde el cmd de Windows. "ó" es el 162 pero de ANSI. en MSDOS debe ser otro código. En internet lo he encontrado como el ASCII 211 (para ó) y ASCII 179 (para Ó). cout << "avi [alt]+211 n"; lo que te queda en windows: cout << "avi╙n"; No hay problema, en DOS deberá verse bien. Saludos
__________________ Friedrich Nietzsche Última edición por Mithrandir; 04/06/2003 a las 15:57 |
| ||||
El problema es que en vez de mostrarme ó me muestra algún caracter raro (si pongo cout << "avión"; ) o [alt]+162 si ponco cout << "avi" << [alt]+162 << "n"; o bien cout << "avi[alt]+162n"; Yo estoy escribirendo el codigo bajo DevC++ 4, pero con la versión 5 también me pasa (al compilar y ejecutar bajo el ms-dos del windows me muestra lo que antes dije). Y la función printf me da error. ¿No hay manera?
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Cita: Si lo quisieras hacer es:El problema es que en vez de mostrarme ¨® me muestra alg¨²n caracter raro (si pongo cout << "avi¨®n"; ) o [alt]+162 si ponco cout << "avi" << [alt]+162 << "n"; o bien cout << "avi[alt]+162n"; cout << "avi" << [alt]+162 << "n"; lo harías también: cout << "avi" << 211 << "n"; creo que sería más claro, pero te recomendo mejor usar: cout << "avi╙n"; Recuerda que no es 162, sino 211. Saludos |
| ||||
Bueno, vamos a volver atrás: cout << "avión"; Eso muestra avi3/4n (3/4 como un único carácter) cout << "avi [alt]+211 n"; Eso muestra avi [alt]+211 n tal cual cout << "avi" << [alt]+211 << "n"; Error de compilación. cout << "avi" << 211 << "n"; Eso muestra avi211n tal cual. cout << "avi"; printf("%c",211); cout << "n"; Error de compilación. ¿Qué puede ser?
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
OK, recapitulando: cuando me refiero a [alt]+algo no significa literalmente, sino que presiones la tecla ALT mas lo que venga después, en este caso el 211 y despues sueltes ALT. debe funcionar escibiendo: cout << "avi [alt]+211 n", o sea que cuando termines de teclear veras algo como: cout << "avi╙n"; //asi lo veras en windows, no importa pero en DOS ver¨¢s: count << "avión"; //asi lo veras en DOS, que es lo que importa eso es todo. Saludos Última edición por Mithrandir; 04/06/2003 a las 16:22 |
| ||||
Ok, ya te entendí. Pone el símbolo Ë pero luego no muestra la ó... Mañana veré tu respuesta, hoy ya estoy cansado. Saludos
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Pues no va... Dice que después de \ tiene que venir un char (y ó no es char)
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| |||
Hola, Creo que en C existe la funcion chr() (o char(), ahora no me acuerdo) a la que le pasas el codigo del caracter. No me acuerdo si era el codigo ASCII o el ANSI. Aun asi, yo creo que el problema no es de tu codigo, si no de windows. Si en el charset de windows no coincide el codigo con el que saca tu codigo, mostrara otro caracter (lo que te pasa ahora). Y windows es tan majo que maneja distintos charset para el entorno grafico y para el modo DOS. Puedes tener configura el entorno grafico con teclado en castellano y abrir una ventana de comandos y tener el teclado en ingles. Esto es porque el msdos se configura en el autoexec y en el config y el entorno grafico tiene otros ficheros de configuracion. Saludos.
__________________ Josemi Aprendiz de mucho, maestro de poco. |
| ||||
cierto, puedes tener diferentes configuraciones de mapa de caracteres. Lo de la función char(valorInt) es obligar a hacer el casting de a caracter, lo cual también debe funcionar, pero es lo mismo que printf("%c",valorInt); si solo usas cout lo deberías intentar. Ahora una pregunta, lo piensas correr en DOS puro (6.22 para atrás) o en los DOS modernos que ya traen soporte de archivos largos (disco de arranque de win98 en adelante, creo) Los DOS nuevos usan ANSI, no ASCII. Ayer hice una prueba con codigo ANSI (o acentuada=162) y compilé el código con TurboC (3.1 para DOS) dentro de win2k. Ahí aparecen los valores en ANSI (y al ejecutar todo se imprime bien). Luego copié el mismo ejecutable a un disco y arranque con el disco de arranque de win98SE, al ejecutarse imprime todo bien (ANSI), lo que indica que DOS de win98Se usa ANSI también, desafortunadamente perdí mis discos de DOS 6.22 y no lo pude ejecutar ahi. Por lo que llego a la conclusión: Si usas una versión de DOS nueva (o la incluida con cmd en windows) no deberías tener problemas, codificas en Win, usas ANSI, aunque el compilador sea basado en ASCII. Si usas el DOS clásico si tienes que preocuparte por usar ASCII. Esto es al menos en teoría, si no es así dinos que es lo que pasa, si no te pinta la "o con acento" aunque en win ves otra cosa, que ves? En windows cambia lo que yo veo y tu ves debido al mapa de caracteres que tenemos cargado cada uno, en ASCII debería ser igual. Saludos
__________________ Friedrich Nietzsche |
| ||||
Mira, en principio debe funcionar para Win2000 y WinXP. Yo lo he probado en XP y no hay manera de que salga la ó, siempre sale cualquier otro simbolito. Es desesperante Saludos
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Ahora se que tienes XP, pero sobre qué lo quieres correr? En la tarde lo checo en mi casa sobre el XP, mañana te aviso, pero de nuevo ¿sobre que lo quieres correr? Saludos
__________________ Friedrich Nietzsche |
| ||||
Pues debería compilar sobre WinXP y correr sobre Win2000 y bajo WinXP. No se si lo dije, pero uso el DevC++ 4 para compilar. Saludos
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
La verdad que no tenía ni idea de que existieran distintas codificaciones para usar en C++ Es un trabajo fin de asignatura, supongo que mis profes lo corregirán bajo Win2000 que es el sistema que utilizamos en la uni, pero prefiero que también vaya con el XP por si las moscas... Saludos
__________________ www.mundodivx.com || www.mundodivx.org Pon tu mano en un horno caliente durante un minuto y te parecerá una hora. Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto. Eso es la relatividad. |
| ||||
Después de hacer varias pruebas y meditación llegué a unas conclusiones. Si solo trabajas con Windows y el CMD del mismo Windows, olvida lo de ANSI y ASCII, todo ahi es ANSI. Lo que te pasaba es que tienes cargados diferentes charsets dentro de tus windows, por eso en uno es diferente que otro. Si lo quisieras corregir supongo que tienes que investigar que charset está cargado (mediante APIs), y entonces actuar dependiendo del resultado. La otra es hacerte el de la vista gorda. Saludos
__________________ Friedrich Nietzsche |
| |||
Respuesta: Caracteres especiales en C++ [QUOTE=ferny;405393]Oye, pues no lo consigo. ¿Me podrías adaptar esta línea? cout << "Avi\242n";// esta es la forma como lo hago con mi compilador c++ standar mira te envio las vocales acentuadas y prueba en tu compilador cout << "\240, "//veras la a acentuada cout << "\202, "// la e acentuada cout << "\241 "// la í cout << "\242 "// la ó cout << "\243 "//la ú cout << "\244 "//La ñ cout << "\245" // creo que es la Ѩ Prueba y me avisas saludos. oscar herculano o. |
| |||
Respuesta: Caracteres especiales en C++ @herculanooviedo respondiste a un tema muy viejo, pero lo que escribiste es correcto , a mi me funciono con la version 4.9.9.2 devcpp con windows xp y me muestra lo que decis bos que muestra. |