Namespaces
Variants

std:: toupper (std::locale)

From cppreference.net
Definido en el encabezado <locale>
template < class CharT >
CharT toupper ( CharT ch, const locale & loc ) ;

Convierte el carácter ch a mayúsculas si es posible, utilizando las reglas de conversión especificadas por el facet std::ctype de la configuración regional dada.

Contenidos

Parámetros

ch - carácter
loc - configuración regional

Valor de retorno

Devuelve la forma en mayúsculas de ch si está listada en la configuración regional, de lo contrario devuelve ch sin cambios.

Notas

Solo se puede realizar un mapeo de caracteres 1:1 mediante esta función, por ejemplo, la forma en mayúsculas de 'ß' es (con algunas excepciones) la cadena de dos caracteres "SS", la cual no puede obtenerse mediante std::toupper .

Implementación posible

template<class CharT>
CharT toupper(CharT ch, const std::locale& loc)
{
    return std::use_facet<std::ctype<CharT>>(loc).toupper(ch);
}

Ejemplo

#include <cwctype>
#include <iostream>
#include <locale>
int main()
{
    wchar_t c = L'\u017f'; // Latin small letter Long S ('ſ')
    std::cout << std::hex << std::showbase;
    std::cout << "in the default locale, toupper(" << (std::wint_t)c << ") = "
              << (std::wint_t)std::toupper(c, std::locale()) << '\n';
    std::cout << "in Unicode locale, toupper(" << (std::wint_t)c << ") = "
              << (std::wint_t)std::toupper(c, std::locale("en_US.utf8")) << '\n';
}

Salida posible:

in the default locale, toupper(0x17f) = 0x17f
in Unicode locale, toupper(0x17f) = 0x53

Véase también

convierte un carácter a minúsculas usando el ctype facet de una configuración regional
(plantilla de función)
convierte un carácter a mayúsculas
(función)
convierte un carácter ancho a mayúsculas
(función)