C++-Standardbibliothek <string>
Die C++-Standardbibliothek (Standard Template Library, STL) ist eine der Kernkomponenten von C++ und bietet umfangreiche Datenstrukturen und Algorithmen.
<string>Es ist die Header-Datei in der C++-Standardbibliothek, die für die Verarbeitung von Zeichenketten verwendet wird.
In C++ ist ein String eine Folge von Zeichen.<string>Die Header-Datei stellt bereitstd::stringEs ist eine Klasse, die Strings im C-Stil kapselt und eine sicherere und einfacher zu verwendende Funktionalität zur String-Manipulation bietet.
Um in einem C++-Programm<string>die Bibliothek zu verwenden, müssen Sie zuerst diese Header-Datei einbinden:
#include <iostream> #include <string>
Grundlegende Syntax
std::stringDie grundlegende Syntax der Klasse ist wie folgt:
-
String-Variable deklarieren:
std::string str;
-
String initialisieren:
std::string str = "Hello, World!";
-
Nutzung
+Strings verketten:std::string str1 = "Hello, "; std::string str2 = "World!"; std::string result = str1 + str2;
Übliche Memberfunktionen
std::stringDie Klasse bietet viele Memberfunktionen zur Manipulation von Strings. Im Folgenden sind einige häufig verwendete Memberfunktionen aufgeführt:
size(): Gibt die Länge des Strings zurück.empty(): Prüft, ob der String leer ist.operator[]Zugriff auf ein Zeichen in der Zeichenkette über den Index.substr(): Ruft eine Teilzeichenkette ab.find()Position einer Teilzeichenkette in der Hauptzeichenkette finden.replace(): Ersetzt einige Zeichen in der Zeichenkette.
Beispiel
Nachfolgend ein einfaches Beispiel unter Verwendung der<string>Bibliothek, einschließlich der Ausgabeergebnisse:
Beispiel
#include <string>
int main() {
// Eine Zeichenkette deklarieren und initialisieren
std::string greeting = "Hello, World!";
std::cout << "Greeting: " << greeting << std::endl;
// size() verwenden, um die Länge der Zeichenkette zu ermitteln
std::cout << "Length of the greeting: " << greeting.size() << std::endl;
// empty() verwenden, um zu prüfen, ob die Zeichenkette leer ist
std::cout << "Ist die Begrüßung leer? " << (greeting.empty() ? "Ja" : "Nein") << std::endl;
// Verwende operator[], um auf ein Zeichen an einer bestimmten Position zuzugreifen
std::cout << "Zeichen an Position 7: " << greeting[7] << std::endl;
// Verwende substr(), um einen Teilstring zu erhalten
std::string sub = greeting.substr(7, 5);
std::cout << "Teilstring ab Position 7 mit Länge 5: " << sub << std::endl;
// Verwende find(), um einen Teilstring zu finden
std::cout << "Position von 'World' in der Begrüßung: " << greeting.find("World") << std::endl;
// Verwende replace(), um einen Teil der Zeichenkette zu ersetzen
// Ersetze 'World' durch 'C++'
std::string modified = greeting;
std::string::size_type pos = modified.find("World");
if (pos != std::string::npos) {
modified.replace(pos, 5, "C++"); // Beginnend bei Position pos, 5 Zeichen durch "C++" ersetzen
}
std::cout << "Modified greeting: " << modified << std::endl;
return 0;
}
Ausgabe:
Length of the greeting: 13 Is the greeting empty? No Character at position 7: W Substring from position 7 with length 5: World Position of 'World' in the greeting: 7 Modified greeting: Hello, C++!
std::string Memberfunktions-Übersichtstabelle
Im Folgenden finden Sie eine Zusammenfassung der gängigen std::string-Memberfunktionen:| Funktionsname | Beschreibung | Beispielcode |
|---|---|---|
size() | Gibt die Länge des Strings zurück (die Anzahl der Zeichen). | std::cout << str.size(); |
length() | undsize()Dasselbe, gibt die Länge des Strings zurück. | std::cout << str.length(); |
empty() | Bestimmt, ob der String leer ist. | std::cout << (str.empty() ? "Yes" : "No"); |
operator[] | Greift auf das Zeichen an einer angegebenen Position im String zu. | std::cout << str[0]; |
at() | Zugriff auf das Zeichen an einer angegebenen Position in der Zeichenkette (mit Bereichsprüfung). | std::cout << str.at(0); |
substr() | Gibt einen Teilstring ab der angegebenen Position zurück. | std::string sub = str.substr(0, 5); |
find() | Findet die Position eines Teilstrings in der Zeichenkette. | std::cout << str.find("sub") << std::endl; |
rfind() | Findet die Position eines Teilstrings vom Ende der Zeichenkette aus. | std::cout << str.rfind("sub") << std::endl; |
replace() | Ersetzt einen Teil des Inhalts in der Zeichenkette. | str.replace(pos, length, "new_substring"); |
append() | Fügt Inhalt am Ende der Zeichenkette hinzu. | str.append(" more"); |
insert() | Fügt Inhalt an einer angegebenen Position ein. | str.insert(pos, "inserted"); |
erase() | Löscht das Zeichen oder den Teilstring an der angegebenen Position. | str.erase(pos, length); |
clear() | Leert die Zeichenkette. | str.clear(); |
c_str() | Gibt eine Zeichenkette im C-Stil zurück (null-terminiert). | const char* cstr = str.c_str(); |
data() | Gibt einen Zeiger auf die Zeichendaten zurück (C++11 und später). | const char* data = str.data(); |
compare() | Vergleicht zwei Zeichenketten. | int result = str.compare("other"); |
find_first_of() | Finde die Position des ersten Zeichens, das mit einem der angegebenen Zeichen übereinstimmt. | size_t pos = str.find_first_of("aeiou"); |
find_last_of() | Finde die Position des letzten Zeichens, das mit einem der angegebenen Zeichen übereinstimmt. | size_t pos = str.find_last_of("aeiou"); |
find_first_not_of() | Finde die Position des ersten Zeichens, das mit keinem der angegebenen Zeichen übereinstimmt. | size_t pos = str.find_first_not_of("aeiou"); |
find_last_not_of() | Finde die Position des letzten Zeichens, das mit keinem der angegebenen Zeichen übereinstimmt. | size_t pos = str.find_last_not_of("aeiou"); |
Beispiel
#include <string>
int main() {
std::string str = "Hello, World!";
// size()
std::cout << "Length: " << str.size() << std::endl;
// empty()
std::cout << "Is empty? " << (str.empty() ? "Ja" : "Nein") << std::endl;
// operator[]
std::cout << "First character: " << str[0] << std::endl;
// at()
std::cout << "Zeichen an Position 7: " << str.at(7) << std::endl;
// substr()
std::string sub = str.substr(7, 5);
std::cout << "Teilstring ab Position 7 mit Länge 5: " << sub << std::endl;
// find()
size_t pos = str.find("Welt");
std::cout << "Position von 'Welt': " << pos << std::endl;
// replace()
str.replace(pos, 5, "C++");
std::cout << "Geänderte Zeichenkette: " << str << std::endl;
// append()
str.append(" Wie geht es dir?");
std::cout << "Angehängte Zeichenkette: " << str << std::endl;
// insert()
str.insert(7, " schön");
std::cout << "String nach Einfügen: " << str << std::endl;
// erase()
str.erase(7, 10);
std::cout << "String nach Löschen: " << str << std::endl;
// clear()
str.clear();
std::cout << "String nach Leeren: " << (str.empty() ? "Leer" : "Nicht leer") << std::endl;
// c_str()
str = "Hallo, C++!";
const char* cstr = str.c_str();
std::cout << "C-String: " << cstr << std::endl;
// compare()
int cmp = str.compare("Hello, C++!");
std::cout << "Vergleichsergebnis: " << cmp << std::endl;
// find_first_of()
size_t pos_first_vowel = str.find_first_of("aeiou");
std::cout << "Erster Vokal an Position: " << pos_first_vowel << std::endl;
// find_last_of()
size_t pos_last_vowel = str.find_last_of("aeiou");
std::cout << "Letzter Vokal an Position: " << pos_last_vowel << std::endl;
// find_first_not_of()
size_t pos_first_non_vowel = str.find_first_not_of("aeiou");
std::cout << "Erster Nichtvokal an Position: " << pos_first_non_vowel << std::endl;
// find_last_not_of()
size_t pos_last_non_vowel = str.find_last_not_of("aeiou");
std::cout << "Letzter Nichtvokal an Position: " << pos_last_non_vowel << std::endl;
return 0;
}
Ausgabe:
Length: 13 Is empty? No First character: H Character at position 7: W Substring from position 7 with length 5: World Position of 'World': 7 Modified string: Hello, C++! Appended string: Hello, C++! How are you? String after insert: Hello, BeautifulC++! How are you? String after erase: Hello, C++! How are you? String after clear: Empty C-style string: Hello, C++! Comparison result: 0 First vowel at position: 1 Last vowel at position: 4 First non-vowel at position: 0 Last non-vowel at position: 10Weitere Erweiterungen