std::string versus C-stijl char-arrays
Vergelijk de moderne std::string met verouderde null-terminated char-arrays en bepaal wanneer u beide gebruikt
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); // 5std::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 LovelaceGrootte 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(); // 5Toegang 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_rangeLege 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 cSnelle 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.
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
- std::string versus C-stijl char-arrays
- Stringbewerkingen: concat, substr, find en replace
- Stringstream stringstream voor parsing
- Stringconversies: to_string en stoi