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.

C
C++
#include <ctype.h>
#include <cctype>

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-0x08tab0x0a-0x0d0x0e-0x1fspace!-/0-9:-@A-FG-Z[-`a-fg-z{-~0x7f
islower000000000001100
isupper000000001100000
isalpha000000001101100
isdigit000000100000000
isxdigit000000101001000
isalnum000000101101100
ispunct000001010010010
isgraph000001111111110
isblank010010000000000
isspace011010000000000
isprint000011111111110
iscntrl111100000000001
isascii111111111111111

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.