std::ispunct
| Definiert in Header <cctype> |
||
| int ispunct( int ch ); |
||
Prüft, ob das gegebene Zeichen ein Satzzeichen ist, wie es von der aktuellen C-Locale klassifiziert wird. Die Standard-C-Locale klassifiziert die Zeichen (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) als 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 Wert ungleich Null, wenn das Zeichen ein Satzzeichen ist, andernfalls Null.
[bearbeiten] Hinweise
Wie alle anderen Funktionen aus <cctype> ist das Verhalten von std::ispunct 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_ispunct(char ch) { return std::ispunct(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_puncts(const std::string& s) { return std::count_if(s.begin(), s.end(), // static_cast<int(*)(int)>(std::ispunct) // wrong // [](int c){ return std::ispunct(c); } // wrong // [](char c){ return std::ispunct(c); } // wrong [](unsigned char c){ return std::ispunct(c); } // correct ); }
[bearbeiten] Beispiel
#include <cctype> #include <clocale> #include <iostream> int main() { unsigned char c = '\xd7'; // the character × (multiplication sign) in ISO-8859-1 std::cout << "ispunct(\'\\xd7\', default C locale) returned " << std::boolalpha << (bool)std::ispunct(c) << '\n'; std::setlocale(LC_ALL, "en_GB.iso88591"); std::cout << "ispunct(\'\\xd7\', ISO-8859-1 locale) returned " << std::boolalpha << (bool)std::ispunct(c) << '\n'; }
Mögliche Ausgabe
ispunct('\xd7', default C locale) returned false
ispunct('\xd7', ISO-8859-1 locale) returned true[bearbeiten] Siehe auch
| prüft, ob ein Zeichen von einer Locale als Satzzeichen klassifiziert wird (Funktionstemplate) | |
| prüft, ob ein breites Zeichen ein Satzzeichen ist (Funktion) | |
| C-Dokumentation für ispunct
| |
| ASCII-Werte | Zeichen |
ispunct |
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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
|