Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++ Grundkurs

Zeichen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
C++ arbeitet mit zahlreichen unterschiedlichen Arten von Zeichen. Dieses Video bietet einen Überblick über die verschiedenen Typen.
04:37

Transkript

In dieser Lektion stelle ich Ihnen die Zeichen char, wchar_t, char16_t und char32_t vor. Am bekanntesten ist sicher char, das klassische Zeichen in C++. Aber es gibt auch die wide chars, die char16_t und char32_t. char16_t sind dafür da, UTF-16 Zeichen anzunehmen, char32_t eben für UTF-32 Zeichen. Also geht es um Unicode. Wie groß die einzelnen Zeichen sind, steht im Header <limits. Jedes dieser einzelnen Zeichen ist dazu da, verschiedene Zeichensätze darzustellen. Sie können natürlich auch Zeichen signed und unsigned definieren; signed sehen Sie hier -128. unsigned sehen Sie hier, flags, diesmal als Hexadezimalausdruck. Jetzt gehe ich noch ein bisschen genauer auf die einzelnen Zeichen ein. char, der Klassiker, der ist ausreichend groß, um Zeichen von ASCII-Zeichensatz darzustellen. D. h., er ist genau ein Byte groß. Genau das ist der Grund, wieso ich beim wchar, beim wide char Zeichen, ein Ausrufezeichen gesetzt habe. Bei dem ist nicht definiert, wie groß der sein muss. Der kann zwei, der kann vier Byte groß sein. Typischerweise ist er vier Byte groß. Das bringt zwei Probleme mit sich. Zum ersten: wenn Sie eine Umgebung haben, wo auf der einen Seite zwei Byte und auf der anderen Seite vier Byte groß sind und Sie wollen das Programm partieren, haben Sie ein Problem. Andererseits: wenn Sie UTF-32 Zeichen darstellen wollen, die per Definition 32 Bit groß sind, können Sie es nicht mit wchar_t, weil Sie keine Zusicherung haben, dass wchar_t tatsächlich 32 Bit, sprich 4 Byte, groß ist. Aus diesem Grund wurden die zwei neuen Zeichentypen eingeführt, char 16_t und char32_t. char16_t ist per Definition 16 Bit groß und char32_t ist per Definition 32 Bit groß, eben um UTF-16 und UTF-32 darzustellen. Zu den Zeichen können Sie natürlich auch Zeichenliterale definieren. Diese werden durch einfache Anführungszeichen ausgezeichnet. Wenn Sie jetzt noch ein Präfix davor setzen, wie L, kleines u oder großes U, wird das Zeichen literal, Zum wchar_t-, zum char16_t- und zum char32_t-Zeichen. Was Sie häufig in Zeichen sehen ist, dass Fluchtsequenzen verwendet werden. Fluchtsequenzen wie \n ist ein Zeichen. Das repräsentiert den Zeilenvorschub. \t das repräsentiert den Tabulator. \\ repräsentiert den Backslash. \‘ für die einfachen Anführungszeichen. \‘‘ für die doppelten. \000 für die Oktalzahl 000. \xhhh für die Hexadezimalzahl. Das waren jetzt viele Zeichen. Ich zeige Ihnen noch diese ganze Sache in der Anwendung. Erst mal hier ein einfaches Zeichen c_, initialisiert mit dem Zeichenliteral c. Dann hier ein unsigned char flag, initialisiert mit dem Hexadezimalwert 6f. Hier folgt noch ein sog. wchar, initialisiert durch das große L. Dann char16_t, initialisiert durch u und dem Ausdruck u und groß U und dem Ausdruck U eingekreist, durch einfache Anführungszeichen. Dann gebe ich hier die Werte aus und da wird es ein bisschen spannender. Wenn ich c ausgebe, passiert nicht viel. Das sehen Sie genau, ich bekomme c. Wenn ich flag ausgebe, bekomme ich nicht 6f, sondern ich bekomme das Zeichen o. Warum? Weil es die Hexadezimalzahl 6f ist und wenn ich die dezimal darstelle, entspricht das dem Buchstaben o. Zum Schluss der wchar, wenn ich den ausgeben will, kommt es auf dieses kleine w hier an. Den kann ich nicht nach cout schreiben, weil cout Ausgabeoperator ist, der für char ausgelegt ist. Also brauche ich einen für wchar, darum wcout. Und so wird er auch schön ausgegeben als groß L. Leider funktioniert die Ausgabe nicht bei char16_t und char32_t, da es die entsprechenden Ausgabestreams noch nicht gibt. Nun zum Abschluss noch die Größe der einzelnen Zeichen. Sie sehen sizeof(char) hat die Größe 1. sizeof(wchar_t) hat bei mir die Größe 4, was vier Byte entspricht. sizeof(char16_t) hat per Definition natürlich auch 2 Byte und sizeoff(char32_t) hat per Definition 4 Byte. In dieser Lektion habe ich Ihnen die vier Zeichentypen char, wchar_t, char 16_t und char32_t vorgestellt. Sie haben insbesondere gesehen, dass der wchar_t keine definierte Größe hat und das dass der Grund war, wieso es den char16_t und den char32_t im modernen C++ gibt.

C++ Grundkurs

Steigen Sie in die mächtige Programmiersprache C++ ein und lernen Sie dabei alle wichtigen Funktionen mit Anwendungsbeispielen kennen.

8 Std. 14 min (147 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!