Namespaces
Variants

std:: toupper

From cppreference.net
Definido en el encabezado <cctype>
int toupper ( int ch ) ;

Convierte el carácter dado a mayúsculas de acuerdo con las reglas de conversión de caracteres definidas por la configuración regional de C actualmente instalada.

En la configuración regional predeterminada "C" , las siguientes letras minúsculas abcdefghijklmnopqrstuvwxyz se reemplazan con sus respectivas letras mayúsculas ABCDEFGHIJKLMNOPQRSTUVWXYZ .

Contenidos

Parámetros

ch - carácter a convertir. Si el valor de ch no es representable como unsigned char y no es igual a EOF , el comportamiento es indefinido.

Valor de retorno

Carácter convertido o ch si no existe una versión en mayúsculas definida por la configuración regional actual de C.

Notas

Como todas las demás funciones de <cctype> , el comportamiento de std::toupper es indefinido si el valor del argumento no es representable como unsigned char ni igual a EOF . Para usar estas funciones de forma segura con char simples (o signed char s), el argumento debe convertirse primero a unsigned char :

char my_toupper(char ch)
{
    return static_cast<char>(std::toupper(static_cast<unsigned char>(ch)));
}

Del mismo modo, no deben usarse directamente con algoritmos estándar cuando el tipo de valor del iterador es char o signed char . En su lugar, convierta primero el valor a unsigned char :

std::string str_toupper(std::string s)
{
    std::transform(s.begin(), s.end(), s.begin(),
                // static_cast<int(*)(int)>(std::toupper)         // incorrecto
                // [](int c){ return std::toupper(c); }           // incorrecto
                // [](char c){ return std::toupper(c); }          // incorrecto
                   [](unsigned char c){ return std::toupper(c); } // correcto
                  );
    return s;
}

Ejemplo

#include <cctype>
#include <climits>
#include <clocale>
#include <iostream>
#include <ranges>
int main()
{
    for (auto bd{0}; unsigned char lc : std::views::iota(0, UCHAR_MAX))
        if (unsigned char uc = std::toupper(lc); uc != lc)
            std::cout << lc << uc << (13 == ++bd ? '\n' : ' ');
    std::cout << "\n\n";
    unsigned char c = '\xb8'; // el carácter ž en ISO-8859-15
                              // pero ¸ (cedilla) en ISO-8859-1
    std::setlocale(LC_ALL, "en_US.iso88591");
    std::cout << std::hex << std::showbase;
    std::cout << "en iso8859-1, toupper('0xb8') da " << std::toupper(c) << '\n';
    std::setlocale(LC_ALL, "en_US.iso885915");
    std::cout << "en iso8859-15, toupper('0xb8') da " << std::toupper(c) << '\n';
}

Salida:

aA bB cC dD eE fF gG hH iI jJ kK lL mM
nN oO pP qQ rR sS tT uU vV wW xX yY zZ
in iso8859-1, toupper('0xb8') gives 0xb8
in iso8859-15, toupper('0xb8') gives 0xb4

Véase también

convierte un carácter a minúsculas
(función)
convierte un carácter a mayúsculas usando la faceta ctype de una configuración regional
(plantilla de función)
convierte un carácter ancho a mayúsculas
(función)
Documentación C para toupper

Enlaces externos

1. ISO/IEC 8859-1 . Desde Wikipedia.
2. ISO/IEC 8859-15 . Desde Wikipedia.