Namespaces
Variants

std:: toupper (std::locale)

From cppreference.net
Défini dans l'en-tête <locale>
template < class CharT >
CharT toupper ( CharT ch, const locale & loc ) ;

Convertit le caractère ch en majuscule si possible, en utilisant les règles de conversion spécifiées par le facette std::ctype de la locale donnée.

Table des matières

Paramètres

ch - caractère
loc - paramètres régionaux

Valeur de retour

Retourne la forme majuscule de ch si elle est répertoriée dans les paramètres régionaux, sinon retourne ch inchangé.

Notes

Seule une correspondance de caractères 1:1 peut être effectuée par cette fonction, par exemple la forme majuscule de 'ß' est (avec quelques exceptions) la chaîne de deux caractères "SS", qui ne peut pas être obtenue par std::toupper .

Implémentation possible

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

Exemple

#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';
}

Sortie possible :

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

Voir aussi

convertit un caractère en minuscule en utilisant la facette ctype d'une locale
(modèle de fonction)
convertit un caractère en majuscule
(fonction)
convertit un caractère large en majuscule
(fonction)