Beschreibung
Textzeichenfolgen können auf zwei Arten dargestellt werden. Du kannst den String
-Datentyp verwenden, der ab Version 0019 Teil des Kerns ist oder du kannst einen
String
aus einem Array des Typs char erstellen und ihn mit einem Nullterminator abschließen.
Diese Seite beschreibt die letztere Methode. Für weitere Informationen zum String
-Objekt, das mehr Funktionalität auf Kosten von mehr Arbeitsspeicher bietet, siehe die string object-Seite.
Syntax
Alle folgenden Angaben sind gültige Deklarationen für Strings.
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[ ] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
Möglichkeiten zur Deklaration von Strings
-
Deklariere ein Array von Zeichen, ohne es wie in Str1 zu initialisieren
-
Deklariere ein Array von chars (mit einem zusätzlichen char) und der Compiler fügt das erforderliche Nullzeichen wie in Str2 hinzu
-
Füge das Nullzeichen explizit hinzu, Str3
-
Initialisiere mit einer
String
-Konstante in Anführungszeichen. Der Compiler passt die Größe des Arrays an dieString
-Konstante und fügt ein abschließendes Nullzeichen an, Str4 -
Initialisiere das Array mit einer expliziten Größen- und Zeichenfolgekonstante, Str5
-
Initialisiere das Array und lasse zusätzlichen Platz für eine größere Zeichenfolge, Str6
Null-Termination
Im Allgemeinen werden Zeichenfolgen mit einem Nullzeichen (ASCII-Code 0) abgeschlossen. Dadurch können Funktionen (wie Serial.print()
) erkennen, wo das Ende eines Strings ist.
Andernfalls würden sie nachfolgende Speicherbytes lesen, die eigentlich nicht Teil der Zeichenfolge sind.
Das bedeutet, dass die Zeichenfolge Platz für ein Zeichen mehr als den gewünschten Text haben muss. Aus diesem Grund müssen Str2 und Str5 acht Zeichen haben, obwohl "Arduino" nur sieben hat - die letzte Position wird automatisch mit einem Nullzeichen gefüllt. Str4 wird automatisch in acht Zeichen umgewandelt, eines für die zusätzliche Null. In Str3 haben wir das Nullzeichen (geschrieben als '\0') selbst explizit eingefügt.
Beachte, dass es möglich ist, eine Zeichenfolge ohne ein abschließendes Nullzeichen zu verwenden (z. B. wenn du die Länge von Str2 mit sieben statt mit acht angegeben hättest). Dadurch werden die meisten Funktionen, die Zeichenfolgen verwenden, nicht mehr richtig funktionieren. Wenn du feststellst, dass sich etwas merkwürdig verhält (mit Zeichen, die sich nicht in der Zeichenfolge befinden), kann dies jedoch das Problem sein.
Einfache oder doppelte Anführungszeichen?
Strings werden immer in doppelten Anführungszeichen ("Abc") und chars in einfachen Anführungszeichen ('A'
) definiert.
Lange strings umbrechen
Du kannst lange Zeichenfolgen wie folgt umbrechen:
char myString[] = "This is the first line"
" this is the second line"
" etcetera";
Arrays von Strings
Wenn du mit großen Textmengen arbeitest, z. B. bei einem Projekt mit LCD-Display, ist es oft praktisch, ein String
-Array zu erstellen.
Da Strings selbst Arrays sind, handelt es sich eigentlich um ein zweidimensionales Array.
In dem folgenden Code zeigt das Sternchen hinter dem Datentyp char
“char*” an, dass dies ein Array von “Zeigern” ist.
Alle Array-Namen sind eigentlich Zeiger, daher ist dies zum Erstellen eines Arrays aus Arrays erforderlich. Zeiger sind eine der eher esoterischen Komponenten von C ++,
die für Anfänger schwer verständlich sind, aber es ist nicht notwendig,Zeiger im Detail zu verstehen, um sie hier effektiv zu verwenden.