C++ String

C++ bietet die folgenden zwei Arten der String-Darstellung:

  • C-Stil-String
  • Der von C++ eingeführte String-Klassentyp

C-Stil-String

Strings im C-Stil stammen aus der Sprache C und werden in C++ weiterhin unterstützt. Ein String ist tatsächlich ein eindimensionales Zeichenarray,Nullzeichen\0das durch ein Nullzeichen abgeschlossen wird. Daher enthält ein nullterminierter String die Zeichen, aus denen der String besteht.

Die folgende Deklaration und Initialisierung erzeugt einenEXAMPLEString. Da am Ende des Arrays ein Nullzeichen gespeichert wird, ist die Größe des Zeichenarrays größer als das WortEXAMPLEEs hat ein Zeichen mehr.

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

Gemäß den Regeln zur Array-Initialisierung können Sie die obige Anweisung wie folgt schreiben:

char site[] = "EXAMPLE";

Das Folgende ist die Speicherdarstellung von Strings, die in C/C++ definiert sind:

C/C++ 中的字符串表示

Tatsächlich müssen Sie dasNullzeichen nicht an das Ende der String-Konstante setzen. Bei der Initialisierung des Arrays wird der C++-Compiler es automatisch\0an das Ende des Strings setzen. Versuchen wir, den obigen String auszugeben:

Beispiel

#include <iostream> using namespace std; int main () { char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; cout << "Rookie Tutorial:"; cout << site << endl; return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:

Example: EXAMPLE

C++ hat eine große Anzahl von Funktionen zum Bearbeiten nullterminierter Zeichenketten:

Laufende NummerFunktionen & Zweck
1strcpy(s1, s2);
Kopiert die Zeichenkette s2 in die Zeichenkette s1.
2strcat(s1, s2);
Hängt die Zeichenkette s2 an das Ende der Zeichenkette s1 an. Das Verketten von Zeichenketten kann auch+eine Zahl sein, zum Beispiel:
string str1 = "example";
string str2 = "google";
string str = str1 + str2;
3strlen(s1);
Gibt die Länge der Zeichenkette s1 zurück.
4strcmp(s1, s2);
Wenn s1 und s2 identisch sind, wird 0 zurückgegeben; wenn s1<s2, ist der Rückgabewert kleiner als 0; wenn s1>s2, ist der Rückgabewert größer als 0.
5strchr(s1, ch);
Gibt einen Zeiger auf das erste Vorkommen des Zeichens ch in der Zeichenkette s1 zurück.
6strstr(s1, s2);
Gibt einen Zeiger auf das erste Vorkommen der Zeichenkette s2 in der Zeichenkette s1 zurück.

Das folgende Beispiel verwendet einige der oben genannten Funktionen:

Beispiel

#include <iostream> #include <cstring> using namespace std; int main () { char str1[13] = "example"; char str2[13] = "google"; char str3[13]; int len ; // str1 nach str3 kopieren strcpy( str3, str1); cout << "strcpy( str3, str1) : " << str3 << endl; // str1 und str2 verketten strcat( str1, str2); cout << "strcat( str1, str2): " << str1 << endl; // Gesamtlänge von str1 nach der Verkettung len = strlen(str1); cout << "strlen(str1) : " << len << endl; return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:

strcpy( str3, str1) : example
strcat( str1, str2): examplegoogle
strlen(str1) : 12

String-Klasse in C++

Die C++-Standardbibliothek bietetstring,einen Klassentyp, der alle oben genannten Operationen unterstützt und außerdem viele weitere Funktionen bietet. Wir werden diese Klasse in der C++-Standardbibliothek kennenlernen, aber sehen wir uns zunächst das folgende Beispiel an:

Jetzt verstehen Sie dieses Beispiel vielleicht noch nicht vollständig, denn bisher haben wir Klassen und Objekte nicht besprochen. Schauen Sie sich dieses Beispiel also vorerst nur kurz an und kommen Sie später darauf zurück, um es zu verstehen, nachdem Sie die Konzepte der objektorientierten Programmierung erfasst haben.

Beispiel

#include <iostream> #include <string> using namespace std; int main () { string str1 = "example"; string str2 = "google"; string str3; int len ; // str1 nach str3 kopieren str3 = str1; cout << "str3 : " << str3 << endl; // str1 und str2 verketten str3 = str1 + str2; cout << "str1 + str2 : " << str3 << endl; // Gesamtlänge von str3 nach der Verkettung len = str3.size(); cout << "str3.size() : " << len << endl; return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:

str3 : example
str1 + str2 : examplegoogle
str3.size() :  12
Weitere Erweiterungen