std::isgraph
| Definiert in Header <cctype> |
||
| int isgraph( int ch ); |
||
Prüft, ob das gegebene Zeichen graphisch ist (eine grafische Darstellung hat), wie es von der aktuell installierten C-Locale klassifiziert wird. In der Standard-C-Locale sind die folgenden Zeichen graphisch:
- Ziffern (
0123456789) - Großbuchstaben (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Kleinbuchstaben (
abcdefghijklmnopqrstuvwxyz) - Satzzeichen (
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)
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
Ein von Null verschiedener Wert, wenn das Zeichen eine grafische Darstellung hat, ansonsten Null.
[bearbeiten] Hinweise
Wie alle anderen Funktionen aus <cctype> ist das Verhalten von std::isgraph undefiniert, wenn der Wert des Arguments weder als unsigned char darstellbar ist noch gleich EOF ist. Um diese Funktionen sicher mit reinen chars (oder signed chars) zu verwenden, sollte das Argument zuerst in unsigned char konvertiert werden.
bool my_isgraph(char ch) { return std::isgraph(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_graphs(const std::string& s) { return std::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::isgraph) // wrong // [](int c){ return std::isgraph(c); } // wrong // [](char c){ return std::isgraph(c); } // wrong [](unsigned char c){ return std::isgraph(c); } // correct ); }
[bearbeiten] Beispiel
#include <cctype> #include <clocale> #include <iostream> int main() { unsigned char c = '\xb6'; // the character ¶ in ISO-8859-1 std::cout << "isgraph(\'\\xb6\', default C locale) returned " << std::boolalpha << (std::isgraph(c) != 0) << '\n'; std::setlocale(LC_ALL, "en_GB.iso88591"); std::cout << "isgraph(\'\\xb6\', ISO-8859-1 locale) returned " << std::boolalpha << (std::isgraph(c) != 0) << '\n'; }
Mögliche Ausgabe
isgraph('\xb6', default C locale) returned false
isgraph('\xb6', ISO-8859-1 locale) returned true[bearbeiten] Siehe auch
| prüft, ob ein Zeichen von einer Locale als grafisch klassifiziert wird (Funktionstemplate) | |
| prüft, ob ein breites Zeichen ein grafisches Zeichen ist (Funktion) | |
| C-Dokumentation für isgraph
| |
| ASCII-Werte | Zeichen |
isgraph |
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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
|