std::toupper
| Definiert in Header <cctype> |
||
| int toupper( int ch ); |
||
Konvertiert das gegebene Zeichen in Großbuchstaben gemäß den Zeichenkonvertierungsregeln, die durch das aktuell installierte C-Locale definiert sind.
Im Standard- "C"-Locale werden die folgenden Kleinbuchstaben abcdefghijklmnopqrstuvwxyz durch die entsprechenden Großbuchstaben ABCDEFGHIJKLMNOPQRSTUVWXYZ ersetzt.
Inhalt |
[bearbeiten] Parameter
| ch | - | zu konvertierendes Zeichen. Wenn der Wert von ch nicht als unsigned char darstellbar ist und nicht EOF entspricht, ist das Verhalten undefiniert. |
[bearbeiten] Rückgabewert
Konvertiertes Zeichen oder ch, wenn keine Großbuchstabenversion durch das aktuelle C-Locale definiert ist.
[bearbeiten] 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 chars (oder signed chars) 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 zuerst in unsigned char.
std::string str_toupper(std::string s) { std::transform(s.begin(), s.end(), s.begin(), // static_cast<int(*)(int)>(std::toupper) // wrong // [](int c){ return std::toupper(c); } // wrong // [](char c){ return std::toupper(c); } // wrong [](unsigned char c){ return std::toupper(c); } // correct ); return s; }
[bearbeiten] 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[bearbeiten] Siehe auch
| konvertiert ein Zeichen in Kleinbuchstaben (Funktion) | |
| konvertiert ein Zeichen mit dem ctype-Facet einer Locale in Großbuchstaben (Funktionstemplate) | |
| wandelt ein breites Zeichen in Großbuchstaben um (Funktion) | |
| C-Dokumentation für toupper
| |
[bearbeiten] Externe Links
| 1. | ISO/IEC 8859-1. Aus Wikipedia. |
| 2. | ISO/IEC 8859-15. Aus Wikipedia. |