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

Mostrar ciertos carácteres en la terminal

Estas en el tema de Mostrar ciertos carácteres en la terminal en el foro de C/C++ en Foros del Web. Hola a todos. Mi problema es que al intentar mostrar en pantalla la cadena "500 €" con un cout , en lugar de "500 €" ...
  #1 (permalink)  
Antiguo 13/08/2007, 00:37
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 19 años
Puntos: 1
Mostrar ciertos carácteres en la terminal

Hola a todos.

Mi problema es que al intentar mostrar en pantalla la cadena "500 €" con un cout, en lugar de "500 €" en la terminal aparece el texto "500 ?".

¿Por qué pasa esto? ¿Es porque '€' no es un carácter ASCII? Si es así, ¿cómo puedo imprimir carácteres no ASCII?
  #2 (permalink)  
Antiguo 13/08/2007, 07:06
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Mostrar ciertos carácteres en la terminal

ASCII es muy anterior al Euro y para imprimirlo podes usar Unicode.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 13/08/2007, 12:40
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Mostrar ciertos carácteres en la terminal

Cita:
Iniciado por Eternal Idol Ver Mensaje
ASCII es muy anterior al Euro y para imprimirlo podes usar Unicode.
Oye Eternal Idol: El estandar de C99 soporta unicode? o hay que utilizar librerias aparte. Recuerdo los wsprintf y cosas asi, que soportan unicode, pero estas solo estan disponibles en la libreria que viene con Visual C++. o me equivoco?

Saludos
  #4 (permalink)  
Antiguo 13/08/2007, 13:02
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 19 años
Puntos: 1
Re: Mostrar ciertos carácteres en la terminal

Vale, eso suponía, ¿pero cómo uso Unicode en C++?

Por cierto, ¿puedo imprimir directamente Unicode a la terminal de Windows o tengo que cambiar antes algo para que sepa que estoy usandolo (creo que por defecto la terminal usa ASCII, ¿no?)?
  #5 (permalink)  
Antiguo 13/08/2007, 14:00
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Mostrar ciertos carácteres en la terminal

Tenes que cambiar la fuente (boton derecho sobre la barra de titulo, propiedades, fuente, Lucida Console).

Hay muchas formas de manejar la consola (ver Character-Mode Applications), la mas facil que se me ocurre ahora mismo para esto seria asi:

Código:
#include <windows.h>

void uprint(wchar_t *str)
{
  DWORD written = 0;
  WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wcslen(str), &written, 0);
}

void main()
{
  uprint(L"Son 2.000.000€, gracias\r\n");
}
Se puede definir UNICODE (#define UNICODE) antes de incluir windows.h y entonces no es necesaria la W, la toma por defecto en lugar de la A que usa normalmente.

PD. Hay poco relacionado con Unicode en C99 que yo sepa, pero tampoco es que muchos compiladores lo soporten (C99) ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO

Última edición por Eternal Idol; 13/08/2007 a las 14:05 Razón: #define UNICODE
  #6 (permalink)  
Antiguo 13/08/2007, 20:47
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años, 1 mes
Puntos: 52
Re: Mostrar ciertos carácteres en la terminal

Cita:
Iniciado por Eternal Idol Ver Mensaje
Tenes que cambiar la fuente (boton derecho sobre la barra de titulo, propiedades, fuente, Lucida Console).

Hay muchas formas de manejar la consola (ver Character-Mode Applications), la mas facil que se me ocurre ahora mismo para esto seria asi:

Código:
#include <windows.h>

void uprint(wchar_t *str)
{
  DWORD written = 0;
  WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wcslen(str), &written, 0);
}

void main()
{
  uprint(L"Son 2.000.000€, gracias\r\n");
}
Se puede definir UNICODE (#define UNICODE) antes de incluir windows.h y entonces no es necesaria la W, la toma por defecto en lugar de la A que usa normalmente.

PD. Hay poco relacionado con Unicode en C99 que yo sepa, pero tampoco es que muchos compiladores lo soporten (C99) ...
Que no se supone que la ultima version de gcc ya lo soporta? o me equivoco?
  #7 (permalink)  
Antiguo 14/08/2007, 00:07
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años, 7 meses
Puntos: 74
Re: Mostrar ciertos carácteres en la terminal

Cita:
Iniciado por Instru Ver Mensaje
Que no se supone que la ultima version de gcc ya lo soporta? o me equivoco?
Sinceramente no se, ni me interesa, ya hace largo rato que no trabajo en C (para algo esta C++).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 18:14.