C++ Variables de tipo char y tabla ASCII

Enviado por jvilella el Lun, 23/09/2019 - 04:05

Requisitos:

Un char es un único carácter, como puede ser la letra 'a', la 'e', el '3', una exclamación ('!'), etc. Por ejemplo:

char letra = 'A';

Fíjate que pongo la A entre comillas simples, no dobles. Las comillas dobles indican que lo que hay entre comillas es un conjunto elementos, donde cada uno de estos elementos es un char, mientras que al poner comillas simples se indica que lo que hay entre las comillas simples es un único carácter.

¿Para qué puede interesar un tipo de variable diferente para una única letra? Para poder realizar operaciones con ella. Me explico: Los ordenadores sólo entienden de 0s y 1s, es decir, de números. Por eso todas las letras y caracteres tienen un número interno asociado que es el que realmente conoce el ordenador. Esta tabla de equivalencias entre cada carácter y su número interno asociado es la tabla ASCII:

Tabla ASCII

Por ejemplo verás que la letra 'A' (mayúscula) es el número 65, y que la 'a' (minúscula) es el 97. Y que la 'Z' es el 90 y la 'z' es el 122.

Por lo tanto, a cualquier letra minúscula, si le resto 32, ¡la convierto en mayúscula! Por ejemplo, si hago:

char letra = 'o';
letra = letra - 32;
cout << letra;

Muestra por pantalla “O”. Y si hago

string nombre = "juan";
nombre[0] = nombre[0] - 32;

Muestra por pantalla "Juan".

Poner un número como “32” es lo que se llama poner un “número mágico”, porque no hay ninguna explicación en el código de por qué se ha puesto este número en particular (y es mágico porque con 32 funciona pero no funciona con 31 ni con 33 ni con ningún otro número). Esto es una mala práctica porque dificulta el análisis del código. Es más elegante hacer lo siguiente:

nombre[0] = nombre[0] - 'a' + 'A';

Al hacer "nombre[o] - 'a'" estamos obteniendo el número que ocupa la letra en el alfabeto (en el caso de la J está en la posición 10 del alfabeto) y al sumarle 'A' obtenemos la letra mayúscula en esa posición del alfabeto.

 

Printer Friendly, PDF & Email

Comentarios

Lo que quiero hacer es colocar la barra invertida dentro del cout, pero si coloco sin más "\" no funciona, por ende se me ocurrió que a lo mejor utilizando código ascii sí podría funcionar, pero si pongo simplemente "92" me muestra 92 jaja. Hay alguna función que me permita utilizar código ascii dentro de un cout?

Hola Lele.

La barra invertida (\) se usa para indicar caracteres especiales, por ejemplo el salto de línea es \n o para poner comillas pondrías \". Por ello una barra invertida sola no se puede interpretar directamente como una barra invertida. Para mostrar la barra invertida por dos barras invertidas: cout << "\\";

Si quisieras poner caracteres de la tabla ASCII puedes usar su valor hexadecimal precedido de \x por ejemplo \x5c muestra la barra invertida: cout << "\x5c";, o el valor decimal usando conversión de tipos: cout << (char)92; o también char letra = 92; cout << letra;

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.