Video: Advanced C++: Mixing C and C++ 2024
Den vanligaste formen av ett C ++-array är den nollställda teckensträngen som används för att visa text, vilket tydligt visar både fördelar och nackdelar med matrisen. Tänk på hur lätt följande syns:
cout << "detta är en sträng";
Men sakerna går sura när du försöker utföra en operation lika enkelt som att sammanfoga två av dessa nollställda strängar:
char * concatCharString (const char * s1, const char * s2) {int längd = strlen (s1) + strlen (s2) + 1; char * s = new char [längd]; strcpy (s, s1); strcat (s, s2); return s;}
STL tillhandahåller en sträng behållare för att hantera skärmsträngar. Klassen strängen ger ett antal operationer (inklusive överbelastade operatörer) för att förenkla hanteringen av teckensträngar. Samma concat () -operation kan utföras enligt följande med sträng objekt:
string concat (const string & s1, const sträng & s2) {return s1 + s2;}
I sin kärna är en sträng fortfarande en grupp. Verksamheten som tillhandahålls av STL gör det lättare att manipulera sträng objekt, men inte så mycket snabbare. Infoga i mitten av en sträng innebär fortfarande att man flyttar innehållet i arrayerna.
Klassen strängen är en instans av klassmallen basic_class med T satt till char . Wstring-klassen är ett annat namn för basic_class . Denna klass ger samma teckenmanipuleringar som visas här för breda strängar.
Definitionen C ++ '11 lägger till u16string och u32string , som sträcker strängmanipuleringsmetoderna till UTF-16 och UTF-32 teckensträngar. Alla jämförelser mellan två strängobjekt utförs lexikografiskt - det vill säga vilken av de två strängarna som ska visas först i ordboken för det aktuella språket.