0Pricing
C++ Academy · Lektion

Warum string_view

String-Kopien vermeiden

Warum string_view ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Die Kosten von Kopien

Wenn Sie std::string als Wert übergeben, wird der gesamte Puffer kopiert. Für den Lesezugriff ist diese Kopie unnötiger Aufwand. std::string_view ist eine leichtgewichtige, nicht besitzende View – lediglich ein Zeiger und eine Längenangabe. Binden Sie <string_view> ein.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "hello";
    std::cout << sv << " len=" << sv.size() << "\n";
}

Was eine View enthält

Eine string_view speichert nur einen Zeiger auf vorhandene Zeichen und eine Länge. Sie besitzt oder kopiert die Daten nicht.

#include <iostream>
#include <string>
#include <string_view>
int main() {
    std::string s = "world";
    std::string_view sv = s; // views s, no copy
    std::cout << sv << "\n";
}

Schreibgeschützte Parameter

Wenn Sie std::string_view akzeptieren, funktioniert Ihre Funktion mit std::string, Stringliteralen und char-Arrays, ohne eines davon zu kopieren.

#include <iostream>
#include <string_view>
void greet(std::string_view name) {
    std::cout << "Hi, " << name << "\n";
}
int main() {
    greet("Ada");
    greet(std::string("Bob"));
}

Keine Speicherallokation

Beim Erstellen einer View wird niemals Speicher allokiert. Daher lässt sie sich kostengünstig kopieren und als Wert übergeben.

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "constant text";
    std::string_view b = a; // trivial copy
    std::cout << (a == b) << "\n";
}

Günstige Teilstrings

substr auf einer View gibt eine weitere View auf denselben Speicher zurück, ohne Zeichen zu kopieren.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abcdef";
    std::cout << sv.substr(2, 3) << "\n"; // cde
}

Performance-Absicht ausdrücken

Bei Funktionen, die Text nur untersuchen, vermeidet string_view sowohl Heap-Allokationen als auch Kopien. Das ist in häufig durchlaufenen Schleifen und beim Parsen wichtig.

Länge und Indizierung

Eine View unterstützt die vertraute Schnittstelle mit size(), empty(), Indexzugriff und bereichsbasiertem Durchlaufen.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "C++";
    for (char c : sv) std::cout << c << "-";
    std::cout << "\n" << sv.size() << "\n";
}

Views sind schreibgeschützt

Sie können Zeichen über eine string_view nicht ändern; sie gewährt nur Lesezugriff. Zum Ändern benötigen Sie den besitzenden String.

Vom Literal zur View

Stringliterale werden direkt in Views konvertiert. Dadurch ist die Übergabe von konstantem Text äußerst kostengünstig.

#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
    auto sv = "literal"sv;
    std::cout << sv.size() << "\n";
}

Kein Ersatz für string

Verwenden Sie std::string, wenn Sie Text besitzen, speichern oder ändern müssen. Verwenden Sie std::string_view für kurzlebige, schreibgeschützte Parameter.

Hinweis zur Lebensdauer

Da eine View ihre Daten nicht besitzt, müssen die zugrunde liegenden Zeichen länger als die View existieren. Eine falsche Verwendung führt zu Dangling-Views, die in einer späteren Lektion behandelt werden.

Kurzer Test

Überprüfen Sie Ihr Verständnis der Motivation hinter string_view.

Zusammenfassung

Sie haben gelernt, warum string_view existiert:

  • Es handelt sich um eine nicht besitzende View aus Zeiger und Länge.
  • Die Annahme einer solchen View vermeidet Kopien und Allokationen bei schreibgeschütztem Text.
  • Sie funktioniert mit Strings, Literalen und char-Arrays.
  • Die betrachteten Daten müssen länger als die View existieren.

Häufig gestellte Fragen

Ist die Lektion „Warum string_view“ kostenlos?

Ja — der vollständige Text von „Warum string_view“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Warum string_view“?

String-Kopien vermeiden Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Warum string_view“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum string_view
  2. Views erstellen
  3. Fallstricke und Lebensdauern
  4. String-Algorithmen
← Zurück zu C++ Academy