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 <iostream>
#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:

FunktionsnameBeschreibungBeispielcode
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 <iostream>
#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: 10
Weitere Erweiterungen