Namespaces
Variants

std:: toupper

From cppreference.net
Definiert im Header <cctype>
int toupper ( int ch ) ;

Wandelt das gegebene Zeichen gemäß den Zeichenkonvertierungsregeln der aktuell installierten C-Locale in Großbuchstaben um.

In der Standard-Lokalisierung "C" werden die folgenden Kleinbuchstaben abcdefghijklmnopqrstuvwxyz durch entsprechende Großbuchstaben ABCDEFGHIJKLMNOPQRSTUVWXYZ ersetzt.

Inhaltsverzeichnis

Parameter

ch - zu konvertierendes Zeichen. Wenn der Wert von ch nicht als unsigned char darstellbar ist und nicht gleich EOF ist, ist das Verhalten undefiniert.

Rückgabewert

Konvertiertes Zeichen oder ch falls keine Großschreibungsversion durch die aktuelle C-Locale definiert ist.

Hinweise

Wie alle anderen Funktionen aus <cctype> ist das Verhalten von std::toupper undefiniert, wenn der Wert des Arguments weder als unsigned char darstellbar noch gleich EOF ist. Um diese Funktionen sicher mit einfachen char s (oder signed char s) zu verwenden, sollte das Argument zuerst in unsigned char konvertiert werden:

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

Ebenso sollten sie nicht direkt mit Standardalgorithmen verwendet werden, wenn der Werttyp des Iterators char oder signed char ist. Konvertieren Sie stattdessen den Wert zunächst zu unsigned char :

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

Beispiel

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

Ausgabe:

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

Siehe auch

wandelt ein Zeichen in Kleinbuchstaben um
(Funktion)
wandelt ein Zeichen unter Verwendung des ctype-Facets einer Locale in Großbuchstaben um
(Funktionstemplate)
wandelt ein Breitzeichen in Großbuchstaben um
(Funktion)
C-Dokumentation für toupper

Externe Links

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