C++ Básicoc++charasciicaracteres

Tipo Char y Código ASCII

Aprende a trabajar con caracteres y el código ASCII en C++

OOI Oaxaca9 de febrero de 20266 min read

El tipo char

El tipo char almacena un único carácter:

char letra = 'A';
char digito = '5';
char simbolo = '@';
char espacio = ' ';

Nota: Los caracteres van entre comillas simples ' ', las cadenas entre comillas dobles " ".

Código ASCII

Cada carácter tiene un valor numérico asociado según la tabla ASCII (American Standard Code for Information Interchange).

Valores importantes

RangoCaracteres
48-57'0' - '9'
65-90'A' - 'Z'
97-122'a' - 'z'

Caracteres especiales

CódigoCarácter
0Nulo (fin de cadena)
10Salto de línea (\n)
32Espacio
48'0'
65'A'
97'a'

Conversión entre char e int

char c = 'A';
int codigo = c;        // codigo = 65
cout << codigo << endl;  // Imprime: 65

int num = 66;
char letra = num;      // letra = 'B'
cout << letra << endl;   // Imprime: B

Ver el código ASCII de un carácter

char c;
cin >> c;
cout << "El código ASCII de '" << c << "' es: " << (int)c << endl;

Convertir código a carácter

int codigo;
cin >> codigo;
cout << "El carácter con código " << codigo << " es: " << (char)codigo << endl;

Operaciones con caracteres

Aritmética de caracteres

Como los caracteres son números, podemos hacer operaciones:

char c = 'A';
c = c + 1;      // c = 'B'
c++;            // c = 'C'

char siguiente = 'M' + 1;  // siguiente = 'N'

Diferencia entre caracteres

int diferencia = 'Z' - 'A';  // diferencia = 25

Recorrer el alfabeto

for (char c = 'A'; c <= 'Z'; c++) {
    cout << c << " ";
}
// Salida: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Conversiones útiles

Mayúscula a minúscula

char mayuscula = 'A';
char minuscula = mayuscula + 32;  // 'a'

// O usando la diferencia conocida
char minuscula2 = mayuscula + ('a' - 'A');

Minúscula a mayúscula

char minuscula = 'a';
char mayuscula = minuscula - 32;  // 'A'

// O usando la diferencia
char mayuscula2 = minuscula - ('a' - 'A');

Funciones de cctype

#include <cctype>

char c = 'A';

// Verificar tipo
isupper(c);   // true si es mayúscula
islower(c);   // true si es minúscula
isalpha(c);   // true si es letra
isdigit(c);   // true si es dígito
isalnum(c);   // true si es letra o dígito
isspace(c);   // true si es espacio/tab/newline

// Convertir
toupper(c);   // Convierte a mayúscula
tolower(c);   // Convierte a minúscula

Dígito a número

char digito = '7';
int numero = digito - '0';  // numero = 7

// Verificar: '7' tiene código 55, '0' tiene código 48
// 55 - 48 = 7

Número a dígito

int numero = 7;
char digito = numero + '0';  // digito = '7'

Ejemplo: Cifrado César

El cifrado César desplaza cada letra un número fijo de posiciones:

#include <iostream>
using namespace std;

char cifrar(char c, int desplazamiento) {
    if (c >= 'A' && c <= 'Z') {
        return 'A' + (c - 'A' + desplazamiento) % 26;
    }
    if (c >= 'a' && c <= 'z') {
        return 'a' + (c - 'a' + desplazamiento) % 26;
    }
    return c;  // No es letra, no cambiar
}

int main() {
    string mensaje;
    int desplazamiento;

    getline(cin, mensaje);
    cin >> desplazamiento;

    for (char c : mensaje) {
        cout << cifrar(c, desplazamiento);
    }
    cout << endl;

    return 0;
}

Entrada:

HOLA MUNDO
3

Salida:

KROD PXQGR

Ejemplo: Contar vocales

#include <iostream>
#include <cctype>
using namespace std;

int main() {
    string texto;
    getline(cin, texto);

    int vocales = 0;

    for (char c : texto) {
        c = tolower(c);
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
            vocales++;
        }
    }

    cout << "Vocales: " << vocales << endl;

    return 0;
}

Caracteres especiales (escape sequences)

SecuenciaSignificado
\nNueva línea
\tTabulación
\\Barra invertida
\'Comilla simple
\"Comilla doble
\0Carácter nulo
cout << "Línea 1\nLínea 2" << endl;
cout << "Columna1\tColumna2" << endl;
cout << "Dijo: \"Hola\"" << endl;

Ejercicios de práctica

Ejercicio 1

Determina si un carácter es letra, dígito o símbolo.

Ver solución
char c;
cin >> c;

if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
    cout << "Letra" << endl;
} else if (c >= '0' && c <= '9') {
    cout << "Dígito" << endl;
} else {
    cout << "Símbolo" << endl;
}

Ejercicio 2

Convierte una cadena a mayúsculas sin usar funciones de biblioteca.

Ver solución
string texto;
getline(cin, texto);

for (int i = 0; i < texto.length(); i++) {
    if (texto[i] >= 'a' && texto[i] <= 'z') {
        texto[i] = texto[i] - 32;
    }
}

cout << texto << endl;

Ejercicio 3

Dado un dígito como carácter, imprímelo en palabras.

Ver solución
char c;
cin >> c;

string palabras[] = {"cero", "uno", "dos", "tres", "cuatro",
                     "cinco", "seis", "siete", "ocho", "nueve"};

if (c >= '0' && c <= '9') {
    int num = c - '0';
    cout << palabras[num] << endl;
} else {
    cout << "No es un dígito" << endl;
}

Siguiente paso

Aprende sobre Operadores de Comparación y Lógicos para tomar decisiones en tus programas.