• Sábado 9 de Noviembre de 2024, 03:39

Autor Tema:  entrada en consola de caracteres con tilde  (Leído 2501 veces)

picyo

  • Visitante
entrada en consola de caracteres con tilde
« en: Lunes 7 de Junio de 2010, 15:50 »
0
Hola, he visto cómo puedo ver caracteres con tilde ( por ejemplo "ú") para interpretarlos en consola. Como por ejemplo :

Código: C++
  1. std::locale::global(std::locale("spanish"));
  2. printf("En un rincón se vió...");
  3.  

también se puede hacer con la entrada de 2 caracteres en un string (´+letra) y decir, si hay 'ú' escribe    :
Código: C++
  1. cout<<"243"<<endl;
  2.  

La primera de todas me ha gustado cerla, ya que para cadenas de caracteres "establecidos" no hay que ir a ninguna tabla. Pero la entrada por usuario me está siendo un problema, ninguna de estas dos soluciones me sirve.

1) Uso esta funcion
Código: C++
  1. TeclaPulsada=Console::ReadKey(true);
  2.  
y en cuanto pulso cualquier tecla ( primero la de acento, claro) ya no me deja pulsar una siguiente.
2) Así que decido volver a usar cin>>. Para ello, veo que como usuario si puedo introducir la letra "ú", pero al hacer cout<< me sale el símbolo de la libra

¿ Cómo puedo solucionar este problema ? Es decir, permitir al usuario escribir una tilde en una letra como entrada

picyo

  • Visitante
Re: entrada en consola de caracteres con tilde
« Respuesta #1 en: Lunes 7 de Junio de 2010, 16:03 »
0
bueno veo que con
# std::locale::global(std::locale("spanish"));
la verdad no hay  probolema con cin>> y cout<<, pero ahora me viene la duda ( de echo lo que quiero es esto) quiero "obligarme" a usar el tipo wchar o similar, y no el char. Que tiene de "especial pues ?" Se que es para uso de unicoide, que es lo que quiero ( es ISO estandar ademas el unicoide )..es quizas que al poner  # std::locale::global(std::locale("spanish")); "estandariza" los caracteres españoles ( o la lengua de uso ) ? Es decir, si no usase eso, deberia usar como tipo el wchar ( o wchar_t??), entonces si, estoy " de vuelta" con la pregunta que he realizado antes.