C++ Academy · Les

std::string versus C-stijl char-arrays

Vergelijk de moderne std::string met verouderde null-terminated char-arrays en bepaal wanneer u beide gebruikt

Les 1 van 413 stappen

std::string versus C-stijl char-arrays is een gratis C++ Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.

Twee manieren om tekst op te slaan

C++ erft tekenreeksen in C-stijl — null-terminerende arrays van char — en voegt std::string uit de standaardbibliotheek toe. Gebruik vrijwel altijd std::string.

Tekenreeksen in C-stijl

Een tekenreeks in C-stijl is een reeks char-waarden die eindigt met een nulbyte '\0'. Functies zoals strlen doorlopen de array totdat ze de nul vinden.

const char* greeting = "Hello";
// Memory: H, e, l, l, o, \0  (6 bytes)

#include <cstring>
std::cout << std::strlen(greeting);  // 5

std::string

std::string beheert zijn eigen geheugen en groeit indien nodig. Maak een exemplaar aan zoals van elk ander type.

#include <string>
std::string name = "Ada";
name += " Lovelace";
std::cout << name;  // Ada Lovelace

Grootte en lengte

std::string::size() en length() zijn synoniemen en geven het aantal tekens terug (de nulterminator niet meegerekend).

std::string s = "hello";
std::cout << s.size();   // 5
std::cout << s.length(); // 5

Toegang via index

Lees of schrijf tekens met [] of at(). In tegenstelling tot [] geeft at() een foutmelding als de index buiten het bereik valt.

std::string s = "cat";
char first = s[0];        // 'c'
char last  = s.at(2);     // 't'
// s.at(10) throws std::out_of_range

Lege tekenreeksen

Gebruik empty() in plaats van size() == 0. Dat is duidelijker en even snel.

Wanneer je const char* gebruikt

Gebruik een tekenreeks in C-stijl wanneer:

  • Je communiceert met C-bibliotheken of API's van het besturingssysteem
  • Je werkt met tekenreeksletterlijke waarden die nooit veranderen
  • Je werkt met ingebedde systemen waarop de standaardbibliotheek niet beschikbaar is

Tussen beide converteren

Haal met .c_str() een C-tekenreeks uit een std::string. Maak rechtstreeks een std::string aan vanuit een const char*.

std::string s = "Hello";
const char* c = s.c_str();

const char* literal = "world";
std::string s2(literal);

Tekenreeksletterlijke waarden zijn const char[]

Een tekenreeksletterlijke waarde zoals "hi" heeft het type const char[3] (inclusief de nulterminator). Deze bevindt zich in alleen-lezengeheugen.

Ruwe tekenreeksletterlijke waarden

Gebruik het voorvoegsel R"(...)" om de verwerking van escape-tekens over te slaan. Dit is handig voor regex-patronen en bestandspaden.

std::string regex = R"(\d+\.\d{2})";
std::string path  = R"(C:\Users\Ada)";

Een std::string doorlopen

Tekenreeksen zijn containers. Doorloop ze met een for-lus op basis van een bereik, indexen of iterators.

std::string s = "abc";
for (char c : s) std::cout << c << " ";  // a b c

Snelle controle

Welke methode van std::string geeft een foutmelding als de index buiten het bereik valt?

Samenvatting

Gebruik bij voorkeur std::string voor beheerde tekst. Gebruik const char* voor letterlijke waarden en interoperabiliteit met C-API's. Converteer ertussen met .c_str() en rechtstreekse constructie.

Gratis beginnen

Leer C++ met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “std::string versus C-stijl char-arrays” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “std::string versus C-stijl char-arrays”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.

Wat leer ik in “std::string versus C-stijl char-arrays”?

Vergelijk de moderne std::string met verouderde null-terminated char-arrays en bepaal wanneer u beide gebruikt Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C++ Academy te beginnen?

Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “std::string versus C-stijl char-arrays”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C++ Academy?

Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. std::string versus C-stijl char-arrays
  2. Stringbewerkingen: concat, substr, find en replace
  3. Stringstream stringstream voor parsing
  4. Stringconversies: to_string en stoi
← Terug naar C++ Academy