std:: toupper
|
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. |