Ver Mensaje Individual
  #12 (permalink)  
Antiguo 29/10/2015, 23:56
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Buffer de entrada en modo binario?

Hola; creo que hay una confusión aquí. El C++ no tiene nada que ver con ninguna consola; esas son cosas de tu sistema operativo.
Asumo que usas Windows.

En tu código, voy a cambiar un par de líneas que usas para mostrar las dos cadenas a y b, por estas otras:

Código:
cout << "Valor de a: " << (int)(unsigned char)a[0] << endl;
cout << "Valor de b: " << (int)(unsigned char)b[0] << endl;
Así tendría que mostrar el valor decimal de la primera "ñ" que has escrito para a, y de las segunda "ñ", que has ingresado por teclado.

Se debería mostrar:
Código:
Valor de a: 241
Valor de b: 164
Donde el primero de esos valores fue generado por el editor de texto que usaste para escribir el código y luego compilarlo y el segundo fue generado por tu consola. Pero la consola de Windows usa el viejo juego de caracteres IBM, anterior al ASCII de 127 caracteres (y anterior, naturalmente, al ASCII extendido de 256, y ni hablar de Unicode). Y en ese juego de caracteres, la "ñ" tiene el valor decimal 164. Entonces, la primera "ñ" (decimal 241) es correcta, es la que escribió tu editor de texto como sabe hacerlo, y la segunda "ñ" (decimal 164) también es correcta, es la que escribió la consola con el juego de caracteres que usa hace 30 años (puedes ver https://en.wikipedia.org/wiki/Code_page_437)

Si pones esta línea (https://msdn.microsoft.com/en-us/lib...=vs.85).aspx):
Código:
SetConsoleCP(GetACP());
antes de usar la consola (necesita #include "Windows.h"), pondrás el input code page de la consola en armonía con el ANSI code page que esté activo en tu Windows.

Bueno, como ves, nada de todo esto tiene que ver con el C++, para el que ni siquiera existen los conceptos de "consola" ni de "teclado", figúrate. Y por favor, deja eso de "capturar del teclado en binario", que sólo tú sabrás qué has querido decir, y esas quejas sobre el lenguaje, al menos espera a enterarte un poco de qué va... :)