In diesem Blogbeitrag dreht sich alles um den String-Datentypen, also um Zeichenketten, in der Programmiersprache C++. In einem älteren Blogbeitrag zu C++, bei dem ein simples Hello-World-Programm vorgestellt wurde, hatten wir es bereits mit einer Zeichenkette — nämlich „Hello, World!“ — zu tun.
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!\n";
return 0;
}Dabei handelte es sich aber nicht um einen C++-Datentyp. Es verhält sich nämlich so, dass Hello, World! ein String-Literal vom Datentyp char[], mithin ein C-Style String (auch: C-String) ist. Da C++ ist im Grunde eine Weiterentwicklung von C ist, kann C-Code bzw. können C-Style-Datentypen verwendet werden.
Die moderne Variante für Strings
Nun geht es hier aber um C++. Anstatt also einen C-Style String zu verwenden, soll nun der Code dahingehend verändert werden, dass der C++-Datentyp std::string verwendet wird. Dafür wird nachfolgend eine Variable mit der Bezeichnung text erstellt und ihr die Zeichenkette „Hello, World!“ zugewiesen:
std::string text = "Hello, World!";Diesen Text kann man sich nun wie folgt ausgeben lassen:
std::cout << text << std::endl;Da string, cout und endl zur Standardbibliothek (std) gehören, ist ihnen std:: vorangestellt. Alternativ hätte ich auch, wie im Code am Anfang dieses Artikels, die Zeile
using namespace std;voranstellen können, was Tipparbeit sparen würde, denn dann würde die Code-Zeile für die Ausgabe von „Hello, World!“ folgendermaßen aussehen:
cout << text << endl;Welchen Weg ihr auch wählt, nach der Ausführung des Codes wird im Terminal „Hello, World!“ angezeigt.
Zeichenkette vs. einem einzelnen Zeichen
Mit der C++-Stringklasse std::string kann — wie gezeigt — ein String gebildet werden:
std::string name = "Walter"; Möchte man ein einzelnes Zeichen einer Variable zuweisen, kann der Datentyp char verwendet werden. Interessant ist dabei, dass nicht das Zeichen, sondern der numerische Wert der Zeichencodierung des betreffenden Zeichens gespeichert wird. Im folgenden Beispiel ist dies der numerische Wert für das Zeichen Z. Es ist zu beachten, dass einfache Anführungszeichen zu verwenden sind.
#include <iostream>
int main() {
char zeichen;
zeichen = 'Z'; // einfache Anführungszeichen
std::cout << zeichen << std::endl;
zeichen = 90; // numerischer Wert der Zeichencodierung
std::cout << zeichen << std::endl;
return 0;
}
Ausgabe:
Z
ZWie wir oben gesehen haben, kann char[] für ein Zeichenarray verwendet werden. Zu Erinnerung: Wir haben es hier mit einem C-String zu tun:
#include <iostream>
int main() {
char meinName[] = "Bodo";
std::cout << meinName << std::endl;
return 0;
}
Ausgabe:
BodoHeutzutage sollte die moderne C++-Variante für Strings, also std:string genutzt werden. In älterem Code werdet ihr aber häufig auf char[] treffen.
Fazit
Für einzelne Zeichen und Zeichenketten können unterschiedliche Datentypen verwendet werden. Es gibt die älteren C-Style Datentypen und die moderne Variante std::string. Dies kann gerade für Einsteiger in C++ irritierend sein. Bei der Wahl des Datentyps sollte der modernen C++-Variante der Vorzug gegeben werden. Es ist aber sinnvoll, char bzw. char[] zu kennen, da man in älterem Code mit diesen Datentypen zu tun hat. Abschließend zeige ich noch eine Übersicht zu den besprochenen Datentypen:
| Datentyp | Beschreibung |
|---|---|
char zeichen = 'Z' | ein einzelnes Zeichen |
char name[] = "Julia" | C-String als Array |
std::string name = "Claudia" | C++-String |