C ++

Hur man använder C ++ String Literal

Hur man använder C ++ String Literal
Datortangentbordet har tecken på. När du trycker på en tangent ser du karaktären på skärmen. Obs: utrymme är också ett tecken. En sträng bokstavlig är en sekvens av tecken. Den här artikeln förklarar hur man använder C ++ stränglitterärer. Du borde veta om C ++ - matriser och pekare för att förstå den här artikeln.

Karaktär bokstavlig

En bokstav är en karaktär i enstaka citat. Så,

char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';

är alla olika definitioner av tecken. Observera att en siffra i enstaka citat är ett tecken och inte ett heltal.

En escape-sekvens som \ ”(se nedan) i enstaka citat är ett tecken. Så,

char ident1 = '"';

är en karaktär.

En enda symbol i dubbla citat är inte ett tecken; det är en sträng av en karaktär. Så "A" eller "c" eller "2" är inte ett tecken utan är en sträng med ett tecken vardera.

Variabeln för en röding kan omfördelas senare i programmet, enligt följande:

char ident = 'x';
ident = 'Y';

För att förhindra att ett tecken som tilldelats en identifierare ändras, senare i programmet, föregår definitionen med det reserverade ordet, const, enligt följande:

const char ident = 'd';

Variabeln ident sägs vara skrivskyddad.

Sträng bokstavlig

En sträng bokstavlig är en sekvens av tecken i dubbla citat. Så,

char ident1 [] = "Jag älskar dig"; char ident2 [] = "Jag hatar tre av er"; char ident3 []
= "vi är världen"; char ident4 [] = "Hello World!";

är alla olika definitioner av stränglitteraler. Observera användningen av dubbla citat. Det finns inget som en vanlig variabel för en sträng. En sträng bokstavlig är en rad tecken, där istället för att avgränsa med avgränsas sekvensen med "". Tecken är inte separerade med kommatecken. Varje nummer som är större än antalet tecken i strängens bokstav kan placeras i hakparenteserna. Det är dock bättre att lämna hakparenteserna tomma.

En enda karaktär i dubbla citat är inte en karaktär; det är en sträng av en karaktär. Så "A" eller "c" eller "2" är inte ett tecken utan en sträng med ett tecken vardera.

En strängvariabel tillåter inte omfördelning av hela bokstaven, senare i programmet - se nedan. Enstaka tecken kan dock tilldelas om - se nedan.

Enstaka och dubbla citat i karaktär eller bokstav

För att ha ett enda citat som karaktär, gör något liknande,

char ident = '\' ';

För att ha ett dubbelt citat som en karaktär i en sträng bokstavlig, gör något liknande,

char ident [] = "ab" cd ";

Backslash används i en escape-sekvens för att undvika konflikt med avgränsare. För att ha ett dubbelt citat som karaktär finns det inget behov av bakåtvänd snedstreck: '' 'är okej. Att ha ett enda citat i en sträng bokstavlig, det finns inget behov av bakåtvänd snedstreck: ”ab'cd” är okej.

Eftersom backslash används för att fly från ett tecken, måste det undvikas med ett annat backslash när det används som ett tecken eller i en sträng bokstavlig.

Escape sekvens

En escape-sekvens är en av:

\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ v

Varje escape-sekvens skrivs normalt antingen som ett tecken inom enstaka citat eller som en escape-sekvens inom dubbla citat.

Operationer med karaktärer

Sammankoppling

Per definition kan två stränglitterärer förenas med mellanslag enligt följande:

char ident [] = "abc" "def";
cout << ident << "\n";

Utgången är: abcdef . Denna definition kan utvidgas till mer än två bokstäver. Obs: uttalandet är en definition, inte bara en uppgift. Definitionen kan till och med fortsätta till nästa rad med mellanslag som skiljer raderna enligt följande:

char ident [] = "abc" "def"
"ghi";
cout << ident << "\n";

Produktionen är abcdefghi.

Obs! Tecken kan inte sammanfogas på detta sätt, eftersom de enskilda citaten för tecknet inte kan ha mer än en symbol.

Jämställdhetsoperatörer

Samma tecken i samma fall är lika. De är inte lika om de inte är i samma fall. Överväga,

bool resultat = 'B' == 'B';
cout << result << "\n";

== betyder lika, medan = betyder tilldelat och inte lika. Utgången är 1 för sann. Överväga,

bool resultat = 'B' == 'b';
cout << result << "\n";

Utgången är 0 för falskt. Överväga,

bool resultat = 'b' == 'c';
cout << result << "\n";

Utgången är 0 för falskt. Överväga,

bool resultat = 'B' != 'B';
cout << result << "\n";

!= betyder inte lika, medan = betyder tilldelat och inte lika. Utgången är 0 för falskt. Överväga,

bool resultat = 'B' != 'b';
cout << result << "\n";

Utgången är 1 för sann. Överväga,

bool resultat = 'b' != 'c';
cout << result << "\n";

Utgången är 1 för sann.

Så, == och != är jämställdhetsoperatörer.

Relationsoperatörer

För vanliga tecken i C ++, i stigande ordning, kommer siffrorna framför stora bokstäver, som kommer före små bokstäver.

Så < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = förklaras på samma sätt.

Strängen bokstavlig som ett objekt

Matrisen är en konstant pekare till början av en viss datatypsekvens. På samma sätt är strängen en konstant pekare till början av en teckenföljd. Jämför följande definitioner:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "kvinna";

Den första matrisen är en grupp med inter och har fem element. Den andra och tredje matrisen är matriser med tecken med olika namn, men samma antal element. Den andra och tredje matrisen är desamma, men för deras namn. Textinnehållet i den andra matrisen avgränsas av parenteser; karaktärerna är åtskilda av kommatecken och varje tecken är i enstaka citattecken. Textinnehållet i den tredje matrisen avgränsas av dubbla citat; tecknen är inte separerade med kommatecken och varje tecken är inte i enstaka citattecken. Den andra och tredje matrisen är två sätt att producera en sträng, med den tredje vägen det bättre sättet.

arr är en konstant pekare till det första elementet i dess array, vilket betyder att arr alltid kommer att peka på den plats som har heltalet, 3 även om värdet på 3 ändras. Storleken på arrayen, fem element, förblir egentligen inte konstant. Var och en av värdena i matrisen kan dock ändras.

str är en konstant pekare till det första elementet i sin matris, vilket betyder att str alltid kommer att peka på platsen som har tecknet, 'w' även om värdet på 'w' ändras. Storleken på teckenuppsättningen, fem element, förblir egentligen inte konstant. Emellertid kan vart och ett av värdena för bokstaven ändras.

stri är en konstant pekare till det första elementet i dess bokstavliga (array), vilket betyder att stri alltid kommer att peka på den plats som har karaktären, w även om värdet på w ändras. Storleken på strängens bokstav (array), fem element, förblir egentligen inte konstant. Emellertid kan var och en av värdena för bokstaven modifieras.

Vad som är konstant i en matris eller sträng bokstavlig? Minnesadressen för det första elementet i matrisen eller bokstaven förblir som värdet på matrisen eller bokstavens namn (identifierare) och kan inte ändras. Tja, storleken på matrisen eller bokstavligen förblir egentligen inte konstant. Varje värde i matrisen eller bokstav kan ändras. Följande kod visar hur det fjärde elementet i var och en av matriserna har ändrats:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "kvinna";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Utgången är:

9
kvinnor kvinnor
kvinnor

Observera att elementen i en definierad sträng bokstavlig, som för den tredje definitionen ovan, kan nås med matrisindex (subskript). Anledningen till utgångens andra rad anges nedan.

Definition Prenumeration

Observera att i definitionerna ovan finns inget heltal för prenumeration. När antalet element inte enkelt kan fastställas av programmeraren bör heltalet för prenumerationen utelämnas. Oavsett vad som är fallet bör heltalet inte vara mindre än antalet element i matrisen.

För strängen bokstavligen bör heltalet vara minst 1 högre än antalet tecken i strängen. Detta beror på att nollkaraktären (\ 0) alltid läggs till av kompilatorn, i slutet av en matris som är en sträng, avgränsad med dubbla citat. Nollkaraktären läggs inte till i slutet av den andra matrisen ovan, eftersom den inte är en officiell sträng. Den tredje matrisen är en officiell sträng. Följande kod visar minimivärdena för abonnemang.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "kvinna";

För att göra den andra definitionen till en officiell sträng måste nollkaraktären läggas till enligt följande:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "kvinna";

Resultatet ska nu vara,

9
kvinnor
kvinnor

utan den andra "kvinnan". Observera att motsvarande prenumeration för den andra matrisen är 6 och inte 5 som den var.

Konstanta bokstavliga värden

För att förhindra att varje tecken i de dubbla citaten som tilldelats en identifierare ändras senare i programmet, föregår definitionen med det reserverade ordet, const, enligt följande:

const char ident [] = "Jag älskar dig";

Operationer med stränglitteratur

Jämställdhetsverksamhet

Jämställdhetsoperatörerna är == och != . När variabler (identifierare) för två strängar jämförs är det bokstavarnas pekare (adresser) som slutligen jämförs; det där är fel. För att jämföra strängar måste bokstäverna jämföras, som i följande kod:

bool resultat = "kvinna" == "kvinna";
cout << result << '\n';

Utgången är 1 för sann. Jämförelsen görs på ordlistans sätt, men med siffror som kommer först i stigande ordning, före stora bokstäver, som kommer före små bokstäver. Utgången för följande kod är 0, för falsk.

bool resultat = "kvinna" != "kvinna";
cout << result << '\n';

Relationsoperatörer med stränglitteratur

Relationsoperatörer arbetar inte med stränglitteraler.

Rå sträng bokstavlig

En rå sträng bokstavlig, gör att en sträng kan visas som skriven, ignorerar escape-sekvenser och respekterar nya rader. Tänk på följande kod:

char str [] = R "(abc \\ d efg hij
klmn \ n "'opq
första) ";
cout << str << '\n';

Utgången är:

abc \\ d efg hij
klmn \ n "'opq
första

I koden börjar den råa strängen bokstavligen med R, följt av ”och ( . Det slutar med) och “.

C ++ huvudsträng bokstavstyper

röding

Char-typen är den ursprungliga C ++ -typen och lagrar vanligtvis ett tecken i åtta bitar.

char16_t

Detta lagrar en karaktär i 16 bitar.

char32_t

Detta lagrar en karaktär i 32 bitar.

wchar_t

char16_t och char32_t är breda tecken. wchar_t är en bred karaktär som är proprietär och implementeringsdefinierad.

Slutsats

En bokstav är en enda karaktär i enstaka citat. En escape-sekvens är en karaktär som också kan vara i enstaka citat. En sträng bokstavlig är en sekvens av tecken i dubbla citat. En sträng bokstavlig är en rad tecken som slutar med \ 0. Likhets- och relationsoperatörerna arbetar med teckenbokstäver. Jämställdhetsoperatörerna arbetar med stränglitteraler, men relationsoperatörerna arbetar inte med stränglitteraler. Teckenidentifierare kan användas i jämförelser, men strängidentifierare bör inte användas i jämförelser. En rå sträng bokstavlig gör att en sträng kan visas som skriven, ignorerar escape-sekvenser och respekterar nya rader.

Chrys

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...