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.
Inhaltsvorschau
C++ unterstützt zwei Arten von Strings:
- Ein String ist ein
char-Array, das mit einemNULL-Zeichen'\0'(Hex0) abgeschlossen ist. Es wird auch als Zeichenkette oder C-Style-String bezeichnet. - Die in C++98 eingeführte neue
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.
- Stringdeklaration und -initialisierung
- String-Eingabe/Ausgabe
- Stringoperationen
Stringdeklaration und Initialisierung
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
String-Eingabe/Ausgabe
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:
- Wir müssen "
#include <string>" verwenden, um diestring-Klasse zu nutzen, und "using namespace std", dastringimstd-Namespace definiert ist. - "
cin >> aStr" liest ein Wort (durch Leerzeichen getrennt) voncin(Tastatur) und weist es derstring-VariablenaStrzu. getline(cin, aStr)liest die gesamte Zeile (bis zu'\n') voncinund weist esaStrzu. Das'\n'-Zeichen wird verworfen.- Um
cinzu leeren, können Sie dieignore(numeric_limits<streamsize>::max(), '\n')-Funktion verwenden, um alle Zeichen bis zu'\n'zu entfernen.numeric_limitsbefindet sich im<limits>-Header.
Stringoperationen
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; // 12Prü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, worldVerkettung 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 verwendenBeispielsweise:
#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

Zusammenfassung
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.



