std::string und C-Style-Zeichenarrays im Vergleich
Vergleichen Sie das moderne std::string mit älteren nullterminierten Zeichenarrays und entscheiden Sie, wann welches eingesetzt wird
std::string und C-Style-Zeichenarrays im Vergleich 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.
Zwei Arten, Text zu speichern
C++ übernimmt C-Strings — nullterminierte char-Arrays — und ergänzt sie um std::string aus der Standardbibliothek. Verwenden Sie fast immer std::string.
C-Strings
Ein C-String ist eine Folge von char-Zeichen, die mit einem Nullbyte '\0' endet. Funktionen wie strlen durchlaufen das Array, bis sie die Null finden.
const char* greeting = "Hello";
// Memory: H, e, l, l, o, \0 (6 bytes)
#include <cstring>
std::cout << std::strlen(greeting); // 5std::string
std::string verwaltet seinen Speicher selbst und wächst bei Bedarf. Erzeugen Sie es wie jeden anderen Typ.
#include <string>
std::string name = "Ada";
name += " Lovelace";
std::cout << name; // Ada LovelaceGröße und Länge
std::string::size() und length() sind Synonyme und geben die Anzahl der Zeichen zurück (der Nullterminator wird nicht mitgezählt).
std::string s = "hello";
std::cout << s.size(); // 5
std::cout << s.length(); // 5Zugriff über Indizes
Lesen oder schreiben Sie Zeichen mit [] oder at(). Anders als [] löst at() eine Ausnahme aus, wenn der Index außerhalb des gültigen Bereichs liegt.
std::string s = "cat";
char first = s[0]; // 'c'
char last = s.at(2); // 't'
// s.at(10) throws std::out_of_rangeLeere Strings
Verwenden Sie empty() statt size() == 0. Das ist übersichtlicher und genauso schnell.
Wann Sie const char* verwenden sollten
Verwenden Sie einen C-String, wenn:
- Sie mit C-Bibliotheken oder Betriebssystem-APIs interagieren
- Sie mit Stringliteralen arbeiten, die sich nie ändern
- Sie ein eingebettetes System verwenden, auf dem die Standardbibliothek nicht verfügbar ist
Zwischen beiden konvertieren
Ermitteln Sie mit .c_str() einen C-String aus einem std::string. Erzeugen Sie einen std::string direkt aus einem const char*.
std::string s = "Hello";
const char* c = s.c_str();
const char* literal = "world";
std::string s2(literal);Stringliterale sind const char[]
Ein Stringliteral wie "hi" hat den Typ const char[3] (einschließlich des Nullterminators). Es befindet sich in einem schreibgeschützten Speicherbereich.
Raw-Stringliterale
Stellen Sie R"(...)" voran, um die Verarbeitung von Escape-Sequenzen zu überspringen. Das ist nützlich für reguläre Ausdrücke und Dateipfade.
std::string regex = R"(\d+\.\d{2})";
std::string path = R"(C:\Users\Ada)";Über einen std::string iterieren
Strings sind Container. Durchlaufen Sie sie mit einer bereichsbasierten for-Schleife, Indizes oder Iteratoren.
std::string s = "abc";
for (char c : s) std::cout << c << " "; // a b cKurztest
Welche Methode von std::string löst eine Ausnahme aus, wenn der Index außerhalb des gültigen Bereichs liegt?
Zusammenfassung
Bevorzugen Sie std::string für verwalteten Text. Verwenden Sie const char* für Literale und die Interoperabilität mit C-APIs. Konvertieren Sie zwischen beiden mit .c_str() und durch direkte Erzeugung.
Lerne C++ mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 51
- Lektionen
- 203
Häufig gestellte Fragen
Ist die Lektion „std::string und C-Style-Zeichenarrays im Vergleich“ kostenlos?
Ja — der vollständige Text von „std::string und C-Style-Zeichenarrays im Vergleich“ 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 „std::string und C-Style-Zeichenarrays im Vergleich“?
Vergleichen Sie das moderne std::string mit älteren nullterminierten Zeichenarrays und entscheiden Sie, wann welches eingesetzt wird 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 „std::string und C-Style-Zeichenarrays im Vergleich“?
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
- std::string und C-Style-Zeichenarrays im Vergleich
- Zeichenkettenoperationen: concat, substr, find, replace
- stringstream zur Textanalyse
- Zeichenkettenkonvertierung: to_string und stoi