Einführung
In diesem Lab lernst du Strings in C++. Du wirst lernen, wie man Strings definiert und initialisiert und wie man String-Funktionen verwendet.
In diesem Lab lernst du Strings in C++. Du wirst lernen, wie man Strings definiert und initialisiert und wie man String-Funktionen verwendet.
C++ unterstützt zwei Arten von Strings:
char-Array, das mit einem NULL-Zeichen '\0' (Hex 0) abgeschlossen ist. Es wird auch als Zeichenkette oder C-Style-String bezeichnet.string-Klasse.Die "höhere Ebene" string-Klasse wird empfohlen, da sie viel einfacher zu verwenden und zu verstehen ist. Allerdings wurden in vielen älteren Programmen C-Strings verwendet; viele Programmierer verwenden auch "niedrigere Ebene" C-Strings für volle Kontrolle und Effizienz; außerdem werden in einigen Situationen wie bei Befehlszeilenargumenten nur C-Strings unterstützt. Daher müssen Sie möglicherweise beide Arten von Strings verstehen.
Um die string-Klasse zu verwenden, fügen Sie den Header <string> hinzu und verwenden "using namespace std".
Sie können einen String mit einem String-Literal deklarieren und initialisieren, auf eine leere Zeichenkette initialisieren oder mit einem anderen String-Objekt initialisieren. Beispielsweise:
#include <string>
using namespace std;
string str1("Hello"); // Initialisierung mit einem String-Literal (implizite Initialisierung)
string str2 = "world"; // Initialisierung mit einem String-Literal (explizite Initialisierung über Zuweisungsoperator)
string str3; // Initialisierung auf eine leere Zeichenkette
string str4(str1); // Initialisierung durch Kopieren von einem vorhandenen String-Objekt
Beispiel
/* Testing string class input and output */
#include <iostream>
#include <string> // Brauchen diesen Header, um die string-Klasse zu verwenden
#include <limits>
using namespace std; // Auch erforderlich für <string>
int main() {
string message("Hello");
cout << message << endl;
// Eingabe eines Wortes (durch Leerzeichen getrennt) in einen String
cout << "Enter a message (no space): ";
cin >> message;
cout << message << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
// Leert den Eingabepuffer bis zum Zeilenumbruch (braucht <limits> Header)
// Eingabe einer Zeile in einen String
cout << "Enter a message (with spaces): ";
getline(cin, message); // Liest die Eingabe von cin in message
cout << message << endl;
return 0;
}
Ausgabe:
Hello
Enter a message (no space): hello
hello
Enter a message (with spaces): hello world
hello world

HINWEISE:
#include <string>" verwenden, um die string-Klasse zu nutzen, und "using namespace std", da string im std-Namespace definiert ist.cin >> aStr" liest ein Wort (durch Leerzeichen getrennt) von cin (Tastatur) und weist es der string-Variablen aStr zu.getline(cin, aStr) liest die gesamte Zeile (bis zu '\n') von cin und weist es aStr zu. Das '\n'-Zeichen wird verworfen.cin zu leeren, können Sie die ignore(numeric_limits<streamsize>::max(), '\n')-Funktion verwenden, um alle Zeichen bis zu '\n' zu entfernen. numeric_limits befindet sich im <limits>-Header.Länge eines Strings prüfen:
string str("Hello, world");
// Beide geben die Länge des Strings zurück
cout << str.length() << endl; // 12
cout << str.size() << endl; // 12
Prüfen auf leeren String:
string str1("Hello, world");
string str2; // Leerer String
// Prüfen, ob der String leer ist.
cout << str1.empty() << endl; // 0 (false)
cout << str2.empty() << endl; // 1 (true)
Kopieren von einem anderen String: Verwenden Sie einfach den Zuweisungsoperator "=".
string str1("Hello, world"), str2;
str2 = str1;
cout << str2 << endl; // Hello, world
Verkettung mit einem anderen String: Verwenden Sie den Plus-Operator "+", oder den zusammengesetzten Plus-Operator "+=".
string str1("Hello,");
string str2(" world");
cout << str1 + str2 << endl; // "Hello, world"
cout << str1 << endl; // "Hello,"
cout << str2 << endl; // " world"
str1 += str2;
cout << str1 << endl; // "Hello, world"
cout << str2 << endl; // " world"
string str3 = str1 + str2;
cout << str3 << endl; // "Hello, world world"
str3 += "again";
cout << str3 << endl; // "Hello, world worldagain"
Einzelne Zeichen eines Strings lesen/schreiben:
string str("Hello, world");
// Gibt das Zeichen an der angegebenen Position zurück. Die Indizes beginnen bei 0. Es wird eine Indexgrenzenprüfung durchgeführt.
cout << str.at(0) << endl; // 'H'
cout << str[1] << endl; // 'e'
cout << str.at(str.length() - 1) << endl; // 'd'
str.at(1) = 'a'; // Schreibt an Index 1
cout << str << endl; // "Hallo, world"
str[0] = 'h';
cout << str << endl; // "hallo, world"
Extraktion eines Teilstrings:
string str("Hello, world");
// Gibt den Teilstring zurück, der bei beginIndex beginnt und die angegebene Größe hat
cout << str.substr(2, 6) << endl; // "llo, w"
Vergleich mit einem anderen String:
string str1("Hello"), str2("Hallo"), str3("hello"), str4("Hello");
cout << str1.compare(str2) << endl; // 1 'e' > 'a'
cout << str1.compare(str3) << endl; // -1 'h' < 'H'
cout << str1.compare(str4) << endl; // 0
// Sie können auch den Operator == oder!= verwenden
if (str1 == str2) cout << "Same" << endl;
if (str3!= str4) cout << "Different" << endl;
cout << boolalpha; // Gibt bool-Werte als true/false aus
cout << (str1!= str2) << endl;
cout << (str1 == str4) << endl;
Suchen/Ersetzen von Zeichen: Sie können die in #include <algorithm> verfügbaren Funktionen verwenden
Beispielsweise:
#include <algorithm>
......
string str("Hello, world");
replace(str.begin(), str.end(), 'l', '_');
cout << str << endl; // He__o, wor_d
Beispiel
/* Example on C++ string function */
#include <iostream>
#include <string> // verwenden Sie die string-Klasse
using namespace std;
int main() {
string msg = "hello, world!";
cout << msg << endl;
cout << msg.length() << endl; // Länge des Strings
cout << msg.at(1) << endl; // Zeichen an Index 1
cout << msg[1] << endl; // wie oben
cout << msg.empty() << endl; // Prüfung auf leeren String
cout << msg.substr(3, 3) << endl; // Teilstring beginnt bei
// Position 3 und hat die Größe 3
cout << msg.replace(3, 3, "why") << endl; // Ersetzt den Teilstring
cout << msg.append("end") << endl; // Anhängt am Ende
cout << msg + "end" << endl; // wie oben
cout << msg.insert(3, "insert") << endl; // Fügt nach Position 3 ein
string msg1;
msg1 = msg; // Kopiert
cout << msg1 << endl;
cout << "Enter a line: ";
getline(cin, msg); // Liest eine Zeile von der Eingabe
cout << msg << endl;
}
Ausgabe:
hello, world!
13
e
e
0
lo,
helwhy world!
helwhy world!end
helwhy world!endend
helinsertwhy world!end
helinsertwhy world!end
Enter a line: a
a

Der String ist ein weiterer wichtiger Datentyp neben Zahlen. In diesem Abschnitt haben wir die Verwendung von Strings behandelt. C++ bietet viele nützliche Methoden zur Bearbeitung von Strings. Lernen Sie, sie mit Leichtigkeit zu verwenden.