Hur man använder C ++ String Literal

How Use C String Literal



Datortangentbordet har tecken tryckta på dem. När du trycker på en knapp ser du tecknet på skärmen. Obs! Mellanslag är också en karaktär. En strängbokstav är en sekvens av tecken. Den här artikeln förklarar hur du använder C ++ strängbokstavar. Du bör veta om C ++ - matriser och tips för att förstå den här artikeln.

Tecken bokstavligt

En bokstavstecken är ett tecken i enskilda citattecken. Så,







rödingident1= 'TILL'; rödingident2= 'b'; rödingident3= '4'; rödingident4= '6';

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



En escape -sekvens som (se nedan) i enskilda citattecken är ett tecken. Så,



rödingident1= '' ';

är en karaktär.





En enda symbol i dubbla citattecken är inte ett tecken; det är en sträng med ett tecken. 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 tilldelas senare, senare i programmet, enligt följande:



rödingident= 'x';
ident= 'OCH';

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:

konst rödingident= 'd';

Variabeln, ident sägs vara skrivskyddad.

Sträng bokstavligt

En strängbokstav är en sekvens av tecken i dubbla citattecken. Så,

rödingident1[] = 'Jag älskar dig'; rödingident2[] = 'Jag hatar tre av er'; rödingident3[]
= 'vi är världen'; rödingident4[] = 'Hej världen!';

är alla olika definitioner av strängbokstavar. Observera användningen av dubbla citattecken. Det finns inget som en vanlig variabel för en sträng. En strängbokstav är en uppsättning tecken, där sekvensen istället för att avgränsa med {} avgränsas med. Tecknen separeras inte med kommatecken. Vilket som helst som är större än antalet tecken i strängen bokstavligen kan placeras i hakparenteserna. Det är dock bättre att lämna hakparenteserna tomma.

Ett enda tecken i dubbla citattecken är inte ett tecken; det är en sträng med ett tecken. Så A eller c eller 2 är inte ett tecken, utan en sträng med ett tecken vardera.

En strängvariabel möjliggör inte tilldelning av hela bokstaven senare i programmet-se nedan. Dock kan enskilda tecken tilldelas igen-se nedan.

Singel och dubbel citat i bokstav eller bokstav

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

rödingident= ' '';

För att ha ett dubbelcitat som ett tecken i en sträng bokstavligt, gör något som,

rödingident[] = 'bort'CD';

Backslash används i en flyktssekvens för att undvika konflikt med avgränsare. För att ha ett dubbelcitat som en karaktär, det finns inget behov av bakåtvänd snedstreck: '' är okej. För att ha ett enda citat i en sträng bokstavligt talat, finns det inget behov av backslash: ab’cd är okej.

Eftersom bakåtstrecket används för att undkomma ett tecken måste det undvikas med ett annat snedstreck när det används som ett tecken eller i en sträng bokstavligt.

Escape -sekvens

En flyktssekvens är en av:

''? \ ill b f n r> t v

Varje Escape-sekvens skrivs normalt antingen som ett tecken inom enskilda citattecken eller som en Escape-sekvens inom dubbla citattecken.

  • ’: Används som ett enda citattecken, inom enstaka citattecken.
  • : används som en dubbel citattecken, inom en bokstav.
  • ? : eftersom ? är en reserverad karaktär, bör den undkommas i bokstavlig ordning.
  • \: snedstrecket ska undvikas som ett tecken eller i en sträng bokstavligt, för att inte resultera i någon annan mening.
  • a: ljuder en alarmklocka en gång, när den används som ett tecken eller inom en sträng bokstavligt.
  • b: resultat som ett bakåtsteg i displayen inom en sträng bokstavligt, vilket tar bort det föregående tecknet.
  • f: gör att nästa sida matas till skrivaren när den används som ett tecken eller i bokstav.
  • r: returnerar markören, där nästa tecken ska skrivas ut, men inom den aktuella raden.
  • n: återgår markören till början av nästa rad eller bara till nästa rad, beroende på operativsystem.
  • t: skapar en horisontell flik.
  • v: skapar en vertikal flik.

Operationer med karaktärer

Sammankoppling

Vid definition kan två strängbokstavar förenas med mellanslag enligt följande:

rödingident[] = 'abc' 'def';
kosta<<ident<< ' n';

Utdata är: abcdef. Denna definition kan utvidgas till mer än två bokstäver. Obs! Påståendet är en definition, inte bara en uppgift. Definitionen kan till och med fortsätta till nästa rad med utrymme som skiljer linjerna enligt följande:

rödingident[] = 'abc' 'def'
'notera';
kosta<<ident<< ' n';

Utdata är, abcdefghi.

Obs: Tecken kan inte sammanfogas på detta sätt, eftersom de enskilda citattecken 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 samma sak. Överväga,

bool resultat= 'B' == 'B';
kosta<<resultat<< ' n';

== betyder lika, medan = betyder tilldelad till och inte lika. Utgången är 1 för true. Överväga,

bool resultat= 'B' == 'b';
kosta<<resultat<< ' n';

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

bool resultat= 'b' == 'c';
kosta<<resultat<< ' n';

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

bool resultat= 'B' ! = 'B';
kosta<<resultat<< ' n';

! = betyder icke-lika, medan = betyder tilldelad-till och inte-lika. Utgången är 0 för falsk. Överväga,

bool resultat= 'B' ! = 'b';
kosta<<resultat<< ' n';

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

bool resultat= 'b' ! = 'c';
kosta<<resultat<< ' n';

Utgången är 1 för true.

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

Relationsoperatörer

För vanliga tecken i C ++, i stigande ordning, kommer siffror före stora bokstäver, som kommer före gemener.

= förklaras på samma sätt.

Strängen bokstavligt som objekt

Arrayen ä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 teckensekvens. Jämför följande definitioner:

intarr[] = {3, 4, 5, 6, 7};
rödingsid[] = {'i', 'eller', 'm', 'till', 'n'};
rödingstri[] = 'kvinna';

Den första arrayen är en array med ints 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 hängslen; tecknen separeras med kommatecken och varje tecken är i enstaka citattecken. Textinnehållet i den tredje matrisen avgränsas av dubbla citattecken; tecknen separeras inte 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 som 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å platsen som har heltalet, 3 även om värdet på 3 ändras. Matrisens storlek, 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 dess array, 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. Men var och en av värdena på den bokstavliga kan ändras.

stri är en konstant pekare till det första elementet i dess bokstavliga (array), vilket betyder att stri alltid kommer att peka på platsen som har tecknet, w även om värdet på w ändras. Storleken på strängen literal (array), fem element, förblir inte riktigt konstant. Var och en av värdena på den bokstavliga kan dock modifieras.

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

intarr[] = {3, 4, 5, 6, 7};
rödingsid[] = {'i', 'eller', 'm', 'till', 'n'};
rödingstri[] = 'kvinna';

arr[3] = 9;
sid[3] = 'Och';
stri[3] = 'Och';

kosta<<arr[3] << ' n';
kosta<<sid<< ' n';
kosta<<stri<< ' n';

Utgången är:

9
kvinnor kvinnor
kvinnor

Observera att elementen i en definierad sträng bokstavligt, liksom för den tredje definitionen ovan, kan nås med arrayindex (abonnemang). Anledningen till den andra raden i utdata ges nedan.

Definition Prenumeration

Observera att i definitionerna ovan finns det inget heltal för abonnemang. När antalet element inte lätt kan bestämmas av programmeraren, bör heltalet för abonnemanget utelämnas. Hur som helst ska inte heltalet vara mindre än antalet element i matrisen.

För strängen bokstavligt tal ska heltalet vara minst 1 högre än antalet tecken i strängen. Detta beror på att nolltecknet ( 0) alltid läggs till av kompilatorn, i slutet av en array som är en sträng, avgränsad av dubbla citattecken. Nulltecknet läggs inte till i slutet av den andra matrisen ovan, eftersom det inte är en officiell sträng. Den tredje gruppen är en officiell sträng. Följande kod visar de lägsta prenumerationsvärdena.

intarr[5] = {3, 4, 5, 6, 7};
rödingsid[5] = {'i', 'eller', 'm', 'till', 'n'};
rödingstri[6] = 'kvinna';

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

intarr[5] = {3, 4, 5, 6, 7};
rödingsid[6] = {'i', 'eller', 'm', 'till', 'n', ' 0'};
rödingstri[6] = 'kvinna';

Utmatningen ska nu vara,

9
kvinnor
kvinnor

utan de andra kvinnorna. Observera att motsvarande abonnemang för den andra matrisen är 6, och inte 5 som det var.

Ständiga bokstavliga värden

För att stoppa alla tecken i de dubbla citattecken som tilldelas en identifierare från att ändras, senare i programmet, föregår definitionen med det reserverade ordet, const, enligt följande:

konst rödingident[] = 'Jag älskar dig';

Operationer med stränglitteratur

Jämställdhet

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

bool resultat= 'kvinna' == 'kvinna';
kosta<<resultat<< ' n';

Utgången är 1 för true. Jämförelsen görs på ordlistan, men med siffror som kommer först i stigande ordning, före stora bokstäver, som kommer före gemener. Utmatningen av följande kod är 0, för false.

bool resultat= 'kvinna' ! = 'kvinna';
kosta<<resultat<< ' n';

Relationsoperatörer med stränglitteratur

Relationsoperatörer arbetar inte med strängbokstavar.

Raw String Literal

En rå sträng bokstavligen, gör att en sträng kan visas som maskinskriven, ignorerar flyktssekvenser och respekterar nya rader. Tänk på följande kod:

rödingsid[] =R'(abc\d efg han
klmn n'
'opq
första) ';
kosta<< str << '
n';

Utgången är:

abc \ d efg han
klmn n'' opq
första

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

C ++ Huvudsträng bokstavliga typer

röding

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

char16_t

Detta lagrar ett tecken i 16 bitar.

char32_t

Detta lagrar ett tecken 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

Ett bokstavstecken är ett enda tecken i enskilda citattecken. En flyktssekvens är ett tecken som också kan finnas i enskilda citattecken. En strängbokstav är en sekvens av tecken i dubbla citattecken. En strängbokstav är en rad tecken som slutar med 0. Jämställdhets- och relationsoperatörerna arbetar med bokstavstecken. Jämställdhetsoperatörerna arbetar med strängbokstavar, men relationsoperatörerna arbetar inte med strängbokstavar. Teckenidentifierare kan användas i jämförelser, men strängidentifierare ska inte användas i jämförelser. En rå strängbokstav gör att en sträng kan visas som maskinskriven, ignorerar flyktssekvenserna och respekterar nya rader.

Chrys