C ++

Hvordan bruke C ++ String Literal

Hvordan bruke C ++ String Literal
Datamaskinens tastatur har tegn skrevet ut. Når du trykker på en tast, ser du tegnet på skjermen. Merk: mellomrom er også et tegn. En streng bokstavelig er en sekvens av tegn. Denne artikkelen forklarer hvordan du bruker C ++ strenglitteratur. Du bør vite om C ++ matriser og pekere for å forstå denne artikkelen.

Karakter bokstavelig

En bokstavelig karakter er en karakter i enkelt sitater. Så,

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

er alle forskjellige definisjoner av tegn. Merk at et siffer i enkelt anførselstegn er et tegn og ikke et heltall.

En rømningssekvens som \ ”(se nedenfor) i enkelt anførselstegn, er et tegn. Så,

char ident1 = '"';

er en karakter.

Et enkelt symbol i dobbelt anførselstegn er ikke et tegn; det er en streng av ett tegn. Så "A" eller "c" eller "2" er ikke et tegn, men er en streng med ett tegn hver.

Variabelen til en røye kan tildeles på nytt, senere nede i programmet, som følger:

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

For å forhindre at et tegn som er tildelt en identifikator endres, senere nede i programmet, går definisjonen med det reserverte ordet, const, som følger:

const char ident = 'd';

Variabelen ident sies å være skrivebeskyttet.

String bokstavelig

En streng bokstavelig er en sekvens av tegn med doble anførselstegn. Så,

char ident1 [] = "Jeg elsker deg"; char ident2 [] = "Jeg hater tre av deg"; char ident3 []
= "vi er verden"; char ident4 [] = "Hei verden!";

er alle forskjellige definisjoner av strenglitteratur. Legg merke til bruken av dobbelt anførselstegn. Det er ingenting som en vanlig variabel for en streng. En streng bokstavelig er et utvalg av tegn, der i stedet for å avgrense med , er sekvensen avgrenset med “”. Tegnene er ikke skilt med komma. Ethvert tall som er større enn antall tegn i strengen bokstavelig kan plasseres i firkantede parenteser. Det er imidlertid bedre å la firkantede parenteser være tomme.

Et enkelt tegn i dobbelt anførselstegn er ikke et tegn; det er en streng av ett tegn. Så "A" eller "c" eller "2" er ikke et tegn, men en streng med ett tegn hver.

En strengvariabel tillater ikke omfordeling av hele bokstavene, senere nede i programmet - se nedenfor. Imidlertid kan individuelle tegn tildeles på nytt - se nedenfor.

Enkelt og dobbelt sitat i karakter eller bokstavelig

For å ha et enkelt sitat som karakter, gjør noe sånt,

char ident = '\' ';

For å ha et dobbelt sitat som et tegn i en streng bokstavelig, gjør noe sånt,

char ident [] = "ab" cd ";

Backslash brukes i en rømningssekvens, for å unngå konflikt med avgrensere. For å ha et dobbelt sitat som karakter, er det ikke behov for tilbakeslag: '' 'er ok. For å ha et enkelt sitat i en streng bokstavelig, er det ikke behov for tilbakeslag: "ab'cd" er ok.

Siden omvendt skråstrek brukes til å unnslippe et tegn, må det unnslippes med et annet tilbakeslag når det brukes som et tegn eller i en streng bokstavelig.

Escape-sekvens

En rømningssekvens er en av:

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

Hver rømningssekvens blir vanligvis skrevet enten som et tegn i enkelt anførselstegn eller som en rømningssekvens innen dobbelt anførselstegn.

Operasjoner med tegn

Sammenkobling

Per definisjon kan to strenglitteraturer sammenføyes med mellomrom som følger:

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

Utgangen er: abcdef . Denne definisjonen kan utvides til mer enn to bokstaver. Merk: uttalelsen er en definisjon, ikke bare en oppgave. Definisjonen kan til og med fortsette til neste linje med mellomrom som skiller linjene som følger:

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

Produksjonen er abcdefghi.

Merk: Tegn kan ikke sammenkobles på denne måten, da de enkelte anførselstegnene for tegnet ikke kan ha mer enn ett symbol.

Likestillingsoperatører

Samme tegn i samme sak er like. De er ikke like hvis de ikke er av samme tilfelle. Ta i betraktning,

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

== betyr lik, mens = betyr tilordnet og ikke lik. Utgangen er 1 for sann. Ta i betraktning,

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

Utgangen er 0 for usann. Ta i betraktning,

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

Utgangen er 0 for usann. Ta i betraktning,

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

!= betyr ikke-like, mens = betyr tilordnet og ikke ikke-lik. Utgangen er 0 for usann. Ta i betraktning,

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

Utgangen er 1 for sann. Ta i betraktning,

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

Utgangen er 1 for sann.

Så, == og != er likhetsoperatører.

Relasjonsoperatører

For vanlige tegn i C ++, i stigende rekkefølge, kommer tall før store bokstaver, som kommer før små bokstaver.

Så < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = blir forklart på samme måte.

Stringen bokstavelig som et objekt

Matrisen er en konstant peker til begynnelsen av en bestemt datatypesekvens. På samme måte er strengen en konstant peker til begynnelsen av en tegnsekvens. Sammenlign følgende definisjoner:

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

Den første matrisen er en rekke ints og har fem elementer. Den andre og tredje matrisen er matriser med tegn med forskjellige navn, men samme antall elementer. Den andre og tredje matrisen er den samme, men for navnene deres. Tekstinnholdet i den andre matrisen avgrenses av parenteser; tegnene er atskilt med komma, og hvert tegn er i enkelt anførselstegn. Tekstinnholdet i den tredje matrisen avgrenses av doble anførselstegn; tegnene er ikke skilt med komma, og hvert tegn er ikke i enkelt anførselstegn. Den andre og tredje matrisen er to måter å produsere en streng på, med den tredje måten å være den bedre måten.

arr er en konstant peker til det første elementet i matrisen, noe som betyr at arr alltid vil peke på plasseringen som har heltallet, 3 selv om verdien av 3 endres. Størrelsen på matrisen, fem elementer, forblir egentlig ikke konstant. Imidlertid kan hver av verdiene i matrisen endres.

str er en konstant peker til det første elementet i matrisen, noe som betyr at str alltid vil peke på stedet som har tegnet, 'w' selv om verdien til 'w' endres. Størrelsen på karakteroppstillingen, fem elementer, forblir egentlig ikke konstant. Imidlertid kan hver av verdiene til bokstavene endres.

stri er en konstant peker til det første elementet i dens bokstavelige (matrise), noe som betyr at stri alltid vil peke på stedet som har tegnet, w selv om verdien av w endres. Størrelsen på strengen bokstavelig (array), fem elementer, forblir egentlig ikke konstant. Imidlertid kan hver av verdiene til bokstavene endres.

Hva er konstant i en matrise eller streng bokstavelig? Minneadressen til det første elementet i matrisen eller bokstavene forblir som verdien av navnet (identifikatoren) på matrisen eller bokstavelig, og kan ikke endres. Vel, størrelsen på matrisen eller bokstavelig talt forblir egentlig ikke konstant. Hver verdi i matrisen eller bokstavelig kan endres. Følgende kode viser hvordan det fjerde elementet i hver av matriser er endret:

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

Utgangen er:

9
kvinnekvinner
kvinner

Merk at elementene i en definert streng bokstavelig, som for den tredje definisjonen ovenfor, kan nås med matriseindeksen (abonnement). Årsaken til den andre linjen i utgangen er gitt nedenfor.

Definisjon Abonnement

Merk at i definisjonene ovenfor er det ikke noe heltall for abonnement. Når antall elementer ikke enkelt kan bestemmes av programmereren, bør heltallet for abonnementet utelates. Uansett hva som er tilfelle, bør ikke heltallet være mindre enn antall elementer i matrisen.

For strengen bokstavelig talt, bør heltallet være minst 1 høyere enn antall tegn i strengen. Dette er fordi nulltegnet (\ 0) alltid legges til av kompilatoren, på slutten av en matrise som er en streng, avgrenset av dobbelt anførselstegn. Nulltegnet legges ikke til på slutten av den andre matrisen ovenfor, fordi det ikke er en offisiell streng. Den tredje matrisen er en offisiell streng. Den følgende koden viser minimumsverdiene for abonnement.

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

For å gjøre den andre definisjonen til en offisiell streng, må nulltegnet legges til som følger:

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

Produksjonen skal nå være,

9
kvinner
kvinner

uten den andre "kvinnene". Merk at det tilsvarende abonnementet for den andre matrisen er 6, og ikke 5 som den var.

Konstant bokstavelige verdier

For å forhindre at tegn i doble anførselstegn som er tildelt en identifikator endres, senere i programmet, går du foran definisjonen med det reserverte ordet, const, som følger:

const char ident [] = "Jeg elsker deg";

Operasjoner med strenglitteratur

Likestillingsoperasjoner

Likhetsoperatørene er == og != . Når variabler (identifikatorer) for to strenger sammenlignes, er det pekerne (adressene) til bokstavene som ender opp med å bli sammenlignet; det er feil. For å sammenligne strenger, må bokstavene sammenlignes, som i følgende kode:

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

Utgangen er 1 for sann. Sammenligningen gjøres på ordbokens måte, men med tall som kommer først i stigende rekkefølge, før store bokstaver, som kommer før små bokstaver. Utgangen av følgende kode er 0, for falsk.

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

Relasjonsoperatører med strenglitteratur

Relasjonsoperatører jobber ikke med strenglitteratur.

Rå streng bokstavelig

En rå streng bokstavelig, lar en streng vises som skrevet, ignorerer rømningssekvenser og respekterer nye linjer. Vurder følgende kode:

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

Utgangen er:

abc \\ d efg hij
klmn \ n "'opq
første

I koden begynner den rå strengen bokstavelig med R, etterfulgt av ”og ( . Det ender med) og “.

C ++ Hovedstreng bokstavelige typer

røye

Char-typen er den opprinnelige C ++ -typen og lagrer vanligvis et tegn i 8 bits.

char16_t

Dette lagrer et tegn i 16 biter.

char32_t

Dette lagrer et tegn i 32 biter.

wchar_t

char16_t og char32_t er brede tegn. wchar_t er et bredt tegn som er proprietær og implementeringsdefinert.

Konklusjon

En bokstavelig karakter er en enkelt karakter i enkle sitater. En rømningssekvens er et tegn som også kan være i enkelt anførselstegn. En streng bokstavelig er en sekvens av tegn i dobbelt anførselstegn. En streng bokstavelig er en rekke tegn som slutter med \ 0. Likestillings- og relasjonsoperatørene jobber med karakterbokstaver. Likestillingsoperatørene jobber med strenglitteratur, men relasjonsoperatørene jobber ikke med strenglitteratur. Tegnidentifikatorer kan brukes i sammenligninger, men strengidentifikatorer bør ikke brukes i sammenligninger. En rå streng bokstavelig gjør at en streng kan vises som skrevet, ignorerer rømningssekvensene og respekterer nye linjer.

Chrys

Mus Midterste museknapp fungerer ikke i Windows 10
Midterste museknapp fungerer ikke i Windows 10
De midtre museknapp hjelper deg med å bla gjennom lange websider og skjermer med mye data. Hvis det stopper, vil du ende opp med å bruke tastaturet ti...
Mus Hvordan endre venstre og høyre museknapp på Windows 10 PC
Hvordan endre venstre og høyre museknapp på Windows 10 PC
Det er ganske vanlig at alle datamusenheter er ergonomisk designet for høyrehendte brukere. Men det er tilgjengelige musenheter som er spesielt design...
Mus Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Etterlig museklikk ved å sveve med Clickless Mouse i Windows 10
Bruk av mus eller tastatur i feil stilling for overdreven bruk kan føre til mange helseproblemer, inkludert belastning, karpaltunnelsyndrom og mer. I ...