std::isupper
| Definiert in Header <cctype> |
||
| int isupper( int ch ); |
||
Prüft, ob das gegebene Zeichen ein Großbuchstabe ist, wie er von der aktuell installierten C-Locale klassifiziert wird. In der Standard-"C"-Locale gibt std::isupper nur für die Großbuchstaben (ABCDEFGHIJKLMNOPQRSTUVWXYZ) einen Wert ungleich Null zurück.
Wenn std::isupper einen Wert ungleich Null zurückgibt, ist garantiert, dass std::iscntrl, std::isdigit, std::ispunct und std::isspace für dasselbe Zeichen in derselben C-Locale Null zurückgeben.
Das Verhalten ist undefiniert, wenn der Wert von ch nicht als unsigned char darstellbar ist und nicht gleich EOF ist.
Inhalt |
[bearbeiten] Parameter
| ch | - | zu klassifizierendes Zeichen |
[bearbeiten] Rückgabewert
Wert ungleich Null, wenn das Zeichen ein Großbuchstabe ist, sonst Null.
[bearbeiten] Hinweise
Wie alle anderen Funktionen aus <cctype> ist das Verhalten von std::isupper undefiniert, wenn der Wert des Arguments weder als unsigned char darstellbar ist 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.
bool my_isupper(char ch) { return std::isupper(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.
int count_uppers(const std::string& s) { return std::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isupper) // wrong // [](int c){ return std::isupper(c); } // wrong // [](char c){ return std::isupper(c); } // wrong [](unsigned char c){ return std::isupper(c); } // correct ); }
[bearbeiten] Beispiel
#include <cctype> #include <clocale> #include <iostream> int main() { unsigned char c = '\xc6'; // letter Æ in ISO-8859-1 std::cout << "isupper(\'\\xc6\', default C locale) returned " << std::boolalpha << (bool)std::isupper(c) << '\n'; std::setlocale(LC_ALL, "en_GB.iso88591"); std::cout << "isupper(\'\\xc6\', ISO-8859-1 locale) returned " << std::boolalpha << (bool)std::isupper(c) << '\n'; }
Mögliche Ausgabe
isupper('\xc6', default C locale) returned false
isupper('\xc6', ISO-8859-1 locale) returned true[bearbeiten] Siehe auch
| prüft, ob ein Zeichen von einer Locale als Großbuchstabe klassifiziert wird (Funktionstemplate) | |
| prüft, ob ein breites Zeichen ein Großbuchstabe ist (Funktion) | |
| C-Dokumentation für isupper
| |
| ASCII-Werte | Zeichen |
isupper |
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dezimal | hexadezimal | oktal | |||||||||||||
| 0–8 | \x0–\x8 |
\0–\10 |
Steuercodes (NUL, etc.) |
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 9 | \x9
|
\11
|
Tabulator (\t) |
≠0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 10–13 | \xA–\xD |
\12–\15 |
Leerzeichen (\n, \v, \f, \r) |
≠0
|
0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 14–31 | \xE–\x1F |
\16–\37 |
Steuercodes | ≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 32 | \x20
|
\40
|
Leerzeichen | 0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 33–47 | \x21–\x2F |
\41–\57 |
!"#$%&'()*+,-./
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 48–57 | \x30–\x39 |
\60–\71 |
0123456789
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
0
|
0
|
0
|
≠0
|
≠0
|
| 58–64 | \x3A–\x40 |
\72–\100 |
:;<=>?@
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 65–70 | \x41–\x46 |
\101–\106 |
ABCDEF
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
≠0
|
| 71–90 | \x47–\x5A |
\107–\132 |
GHIJKLMNOPQRSTUVWXYZ
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
≠0
|
0
|
0
|
0
|
| 91–96 | \x5B–\x60 |
\133–\140 |
[\]^_`
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 97–102 | \x61–\x66 |
\141–\146 |
abcdef
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
≠0
|
| 103–122 | \x67–\x7A |
\147–\172 |
ghijklmnopqrstuvwxyz
|
0
|
≠0
|
0
|
0
|
≠0
|
0
|
≠0
|
≠0
|
0
|
≠0
|
0
|
0
|
| 123–126 | \x7B–\x7E |
\172–\176 |
{|}~
|
0
|
≠0
|
0
|
0
|
≠0
|
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
| 127 | \x7F
|
\177
|
Rücktaste (DEL) |
≠0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|