Namespaces
Variants

std:: toupper

From cppreference.net
Défini dans l'en-tête <cctype>
int toupper ( int ch ) ;

Convertit le caractère donné en majuscule selon les règles de conversion de caractères définies par les paramètres régionaux C actuellement installés.

Dans la locale par défaut "C" , les lettres minuscules suivantes abcdefghijklmnopqrstuvwxyz sont remplacées par leurs lettres majuscules respectives ABCDEFGHIJKLMNOPQRSTUVWXYZ .

Table des matières

Paramètres

ch - caractère à convertir. Si la valeur de ch n'est pas représentable en tant que unsigned char et n'est pas égale à EOF , le comportement est indéfini.

Valeur de retour

Caractère converti ou ch si aucune version majuscule n'est définie par les paramètres régionaux C actuels.

Notes

Comme toutes les autres fonctions de <cctype> , le comportement de std::toupper est indéfini si la valeur de l'argument n'est ni représentable comme unsigned char ni égale à EOF . Pour utiliser ces fonctions de manière sûre avec des char simples (ou des signed char ), l'argument doit d'abord être converti en unsigned char :

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

De même, ils ne doivent pas être utilisés directement avec des algorithmes standard lorsque le type de valeur de l'itérateur est char ou signed char . À la place, convertissez d'abord la valeur en unsigned char :

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

Exemple

#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'; // the character ž in ISO-8859-15
                              // but ¸ (cedilla) in ISO-8859-1
    std::setlocale(LC_ALL, "en_US.iso88591");
    std::cout << std::hex << std::showbase;
    std::cout << "in iso8859-1, toupper('0xb8') gives " << std::toupper(c) << '\n';
    std::setlocale(LC_ALL, "en_US.iso885915");
    std::cout << "in iso8859-15, toupper('0xb8') gives " << std::toupper(c) << '\n';
}

Sortie :

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

Voir aussi

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

Liens externes

1. ISO/IEC 8859-1 . De Wikipédia.
2. ISO/IEC 8859-15 . De Wikipédia.