C++ Strings Beheersen: C-Stijl vs std::string
C++ biedt de volgende twee typen string representaties:
- De C-stijl karakter string.
- De string class type geïntroduceerd met Standaard C++.
De C-Stijl Karakter String
De C-stijl karakter string ontstond binnen de C-taal en wordt nog steeds ondersteund binnen C++. Deze string is eigenlijk een eendimensionale array van karakters die getermineerd wordt door een null karakter '\0'. Dus een null-getermineerde string bevat de karakters die de string vormen gevolgd door een null.
De volgende declaratie en initialisatie creëert een string bestaande uit het woord "Hello". Om het null karakter aan het einde van de array te houden, is de grootte van de karakterarray die de string bevat één meer dan het aantal karakters in het woord "Hello."
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Als u de regel van array initialisatie volgt, kunt u de bovenstaande statement als volgt schrijven:
char greeting[] = "Hello";
Hier volgt de geheugenpresentatie van de bovenstaande gedefinieerde string in C/C++:
Eigenlijk plaatst u het null karakter niet aan het einde van een string constant. De C++ compiler plaatst automatisch de '\0' aan het einde van de string wanneer het de array initialiseert. Laten we proberen de bovenstaande string te printen:
Live Demo #include <iostream>
using namespace std;
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
return 0;
}
Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:
Greeting message: Hello
C++ ondersteunt een breed scala aan functies die null-getermineerde strings manipuleren:
| Nr. | Functie & Doel |
|---|---|
| 1 | strcpy(s1, s2); Kopieert string s2 in string s1. |
| 2 | strcat(s1, s2); Voegt string s2 toe aan het einde van string s1. |
| 3 | strlen(s1); Retourneert de lengte van string s1. |
| 4 | strcmp(s1, s2); Retourneert 0 als s1 en s2 hetzelfde zijn; kleiner dan 0 als s1<s2; groter dan 0 als s1>s2. |
| 5 | strchr(s1, ch); Retourneert een pointer naar de eerste occurrence van karakter ch in string s1. |
| 6 | strstr(s1, s2); Retourneert een pointer naar de eerste occurrence van string s2 in string s1. |
Het volgende voorbeeld maakt gebruik van enkele van de bovenstaande functies:
Live Demo #include <iostream>
#include <cstring>
using namespace std;
int main () {
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10];
int len ;
// kopieer str1 in str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;
// concateneer str1 en str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;
// totale lengte van str1 na concatenatie
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
return 0;
}
Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het een resultaat ongeveer als volgt:
strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10
De String Class in C++
De standaard C++ bibliotheek biedt een string class type dat alle bovenstaande operaties ondersteunt, en bovendien veel meer functionaliteit. Laten we het volgende voorbeeld controleren:
Live Demo #include <iostream>
#include <string>
using namespace std;
int main () {
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// kopieer str1 in str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// concateneer str1 en str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// totale lengte van str3 na concatenatie
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het een resultaat ongeveer als volgt:
str3 : Hello str1 + str2 : HelloWorld str3.size() : 10
C Taal
- C# Strings: Fundamentals, Operaties & Geavanceerde Technieken
- C++ operators: complete gids met praktische voorbeelden
- C++ comments: best practices voor leesbare, onderhoudbare code
- C++ Class Templates Beheersen: Een Praktische Gids
- C++ Variabelen en Datatypes: Expert‑handleiding voor int, double, char, string, bool
- C++ String‑Functies Beheersen: strcpy, strcat, strlen, strcmp – Praktische Voorbeelden
- C Strings Makkelijk Gemaakt: Declaratie, Invoer, Uitvoer en Bibliotheekfuncties
- C++ Programmeertaal: Overzicht & Belangrijkste Kenmerken
- Java Strings beheersen: aanmaken, methodes en best practices
- String representaties in Java Enums meesteren
- Java Strings Class: String Creatie & Manipulatie Onder de Knie