Video: Advanced C++: Mixing C and C++ 2025
Den mest almindelige form for et C ++-array er den nullterminerede tegnstreng, der bruges til at vise tekst, der klart viser både fordele og ulemper ved arrayet. Overvej hvor let følgende vises:
cout << "dette er en streng";
Men tingene går surt, når du forsøger at udføre en operation, lige så simpelt som at sammenkoble to af disse nullterminerede strenge:
char * concatCharString (const char * s1, const char * s2) {int længde = strlen (s1) + strlen (s2) + 1; char * s = new char [længde]; strcpy (s, s1); strcat (s, s2); return s;}
STL'en leverer en streng beholder til håndtering af displaystrengene. Klassen streng giver en række operationer (herunder overbelastede operatører) for at forenkle manipulationen af tegnstrengene. Den samme concat () -operation kan udføres som følger med streng objekter:
string concat (const string & s1, const string & s2) {return s1 + s2;}
I kernen er en streng stadig en matrix. Operationerne fra STL gør det nemmere at manipulere streng objekter, men ikke så meget hurtigere. Indsætning i midten af en streng involverer stadig at flytte indholdet af arrays rundt.
Klassen streng er faktisk en instantiering af klasseskabelonen basic_class med T indstillet til char . Wstring-klassen er et andet navn til basic_class . Denne klasse giver de samme karaktermanipulationer som vist her for brede strenge.
C + + '11 definitionen tilføjer u16string og u32string , , som udvider strengmanipuleringsmetoderne til UTF-16 og UTF-32 tegnstrengene. Alle sammenligninger mellem to strengobjekter udføres leksikografisk - det vil sige, hvilken af de to strenge der først vil forekomme i ordbogen af det nuværende sprog.