ASCII-Funktionen
In der Programmierung mit C oder C++ wird häufig mit Character-Strings gearbeitet, welche eine Aneinanderreihung von einzelnen Zeichen darstellen. Die einzelnen Zeichen werden üblicherweise mit dem Typ char gehandhabt und als ASCII-Zeichen interpretiert. Die Standardbibliothek ctype hilft, mit diesen Zeichen zu arbeiten, wobei zu beachten ist, dass mit dieser Bibliothek ausdrücklich NUR einzelne 7-Bit-ASCII-Zeichen unterstützt werden.
|
|
Identifizieren von ASCII-Typen
Die folgenden Funktionen geben entweder 0 oder 1 zurück, je nachdem, ob das übergebene ASCII-Zeichen den Kriterien entspricht.
int islower (int asc); | Kleinbuchstaben |
int isupper (int asc); | Grossbuchstaben |
int isalpha (int asc); | Buchstaben |
int isdigit (int asc); | Ziffern |
int isxdigit(int asc); | Hexadezimale Ziffern |
int isalnum (int asc); | Buchstaben und Ziffern |
int ispunct (int asc); | Interpunktionszeichen |
int isgraph (int asc); | Grafische Zeichen |
int isblank (int asc); | Tab und Space |
int isspace (int asc); | Whitespaces |
int isprint (int asc); | Druckbare Zeichen |
int iscntrl (int asc); | Steuerzeichen |
int isascii (int asc); | ASCII-Zeichen |
Zur Veranschaulichung, welche Werte bei welcher Funktion zurückgegeben werden, hier nachfolgend eine Auflistung in tabellarischer Form. Horizontal sind die verschiedenen ASCII-Zeichen aufgetragen, geordnet nach der Codierung.
| 0x00-0x08 | tab | 0x0a-0x0d | 0x0e-0x1f | space | !-/ | 0-9 | :-@ | A-F | G-Z | [-` | a-f | g-z | {-~ | 0x7f | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
islower | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
isupper | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
isalpha | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
isdigit | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
isxdigit | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
isalnum | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
ispunct | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
isgraph | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
isblank | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
isspace | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
isprint | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
iscntrl | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
isascii | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Man beachte, dass der ASCII-Zeichensatz nur für Werte von 0 - 127 definiert ist. Somit wird jegliche Zahl, die nicht in diesem Bereich liegt, nicht als ASCII-Zeichen angesehen, und sämtliche Funktionen geben in diesem Falle 0 zurück.
Im Bibliotheks-Header finden sich ausserdem folgende Funktionen, allerdings scheinen diese Funktionen (aus Sicht des Autors) ihre ursprüngliche Bedeutung verloren zu haben und sind heute nicht weiter nützlich:
int isnumber (int asc); | Dasselbe wie isdigit |
int ishexnumber(int asc); | Dasselbe wie isxdigit |
int isrune (int asc); | Dasselbe wie isascii |
int isideogram (int asc); | Stets 0 |
int isphonogram(int asc); | Stets 0 |
int isspecial (int asc); | Stets 0 |
Umwandlung von Zeichen
Nebst Identifikations-Funktionen gibt es in der ASCII-Bibliothek auch noch Funktionen, die Zeichen umwandeln:
int tolower (int asc); | Umwandlung in Kleinbuchstaben |
int toupper (int asc); | Umwandlung in Grossbuchstaben |
int toascii (int asc); | Umwandlung in ASCII-Zeichen |
int digittoint(int asc); | Umwandlung einer Hexadezimal-Ziffer in einen int. |
Die Funktionen tolower und toupper wandeln dabei explizit nur Buchstaben um. Alle anderen Zeichen werden ohne Änderung zurückgegeben. Die Funktion toascii löscht schlicht sämtliche Bits, die nicht zu den untersten 7 Bits des ASCII-Standards gehören. Die Funktion digittoint wandelt eine einzelne hexadezimale Ziffer in ihre numerische Representation um.