Hvordan bruke C ++ streng bokstavelig

Hvordan bruke C ++ streng bokstavelig
Datatastaturet har tegn skrevet ut på dem. Når du trykker på en tast, ser du tegnet på skjermen. Merk: Plass er også en karakter. En streng bokstavelig er en sekvens av tegn. Denne artikkelen forklarer hvordan du bruker C ++ strenglitteraler. Du bør vite om C ++ -arrayer og pekere for å forstå denne artikkelen.

Karakter bokstavelig

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

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

er alle forskjellige definisjoner av karakterer. Merk at et siffer i enkelt sitater er et tegn og ikke et heltall.

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

char ident1 = '"';

er en karakter.

Et enkelt symbol i dobbeltkjørt er ikke en karakter; Det er en streng med 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 tilordnes, senere nede i programmet, som følger:

char ident = 'x';
identitet = 'y';

For å hindre et tegn som er tildelt en identifikator fra å bli endret, senere nede i programmet, går foran definisjonen med det reserverte ordet, Const, som følger:

const char ident = 'd';

Variabelen, identiteten sies å være skrivebeskyttet.

Streng bokstavelig

En streng bokstavelig er en sekvens av tegn i doble sitater. Så,

char ident1 [] = "Jeg elsker deg"; char ident2 [] = "Jeg hater 3 av deg"; char ident3 []
= "Vi er verden"; char ident4 [] = "hei verden!";

er alle forskjellige definisjoner av strenglitteraler. Legg merke til bruken av dobbeltkjørt. Det er ingenting som en vanlig variabel for en streng. En streng bokstavelig er en rekke chars, der i stedet for å avgrense med , er sekvensen avgrenset med "". Krangene er ikke atskilt med komma. Et hvilket som helst antall større enn antallet tegn i strengen bokstavelig kan plasseres i de firkantede parentesene. Imidlertid er det bedre å la de firkantede parentesene være tomme.

En enkelt karakter i dobbeltkjørt er ikke en karakter; Det er en streng med ett tegn. Så "A" eller "C" eller "2" er ikke et tegn, men en streng med ett tegn hver.

En strengvariabel tillater ikke tilordning av den komplette bokstavelige, senere nede i programmet - se nedenfor. Imidlertid kan individuelle tegn tilordnes på nytt - se nedenfor.

Enkelt og dobbelt sitat i karakter eller bokstavelig

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

char ident = '\' ';

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

char ident [] = "ab" cd ";

Backslash brukes i en fluktsekvens, for å unngå konflikt med avgrensere. For å ha et dobbelt sitat som karakter, er det ikke behov for tilbakeslaget: '”' er ok. For å ha et enkelt sitat i en streng bokstavelig, er det ikke behov for tilbakeslaget: "Ab'cd" er ok.

Siden tilbakeslaget brukes til å unnslippe en karakter, må den slippes med en annen tilbakeslag når den brukes som karakter eller i en streng bokstavelig.

Escape Sequence

En fluktsekvens er en av:

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

Hver rømningssekvens skrives normalt enten som et tegn i enkelt sitater eller som en rømningssekvens innenfor dobbeltkvoter.

  • \ ': brukes som et enkelt sitatkarakter, innenfor enkelt sitater.
  • \ ”: Brukes som et dobbelt sitatkarakter, i en bokstavelig.
  • \? : siden ? er en reservert karakter, den skal slippes i en bokstavelig.
  • \\: Backslash skal slippes som en karakter eller i en streng bokstavelig, for ikke å resultere i noen annen betydning.
  • \ A: Høres ut en alarmklokke en gang, når den brukes som karakter eller i en streng bokstavelig.
  • \ B: Resultater som et backspace i skjermen i en streng bokstavelig, og tar av det forrige tegn.
  • \ F: fører til at neste side blir matet til skriveren når den brukes som tegn eller i en bokstavelig.
  • \ r: Returnerer markøren, der den neste karakteren skal skrives ut, men innenfor gjeldende linje.
  • \ n: Returnerer markøren til begynnelsen av neste linje eller bare til neste linje, avhengig av operativsystem.
  • \ T: Oppretter en horisontal fane.
  • \ V: Oppretter en vertikal fane.

Operasjoner med karakterer

Sammenkobling

På definisjonen kan to strenglitteraler kobles sammen med plass 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 et oppdrag. Definisjonen kan til og med fortsette til neste linje med rom som skiller linjene som følger:

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

Utgangen er, abcdefghi.

Merk: Karakterer kan ikke sammenkobles på denne måten, ettersom de eneste sitatene for karakteren ikke kan ha mer enn ett symbol.

Likestillingoperatører

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

boolresultat = 'b' == 'b';
cout << result << "\n";

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

boolresultat = 'b' == 'b';
cout << result << "\n";

Utgangen er 0 for falsk. Ta i betraktning,

boolresultat = 'b' == 'c';
cout << result << "\n";

Utgangen er 0 for falsk. Ta i betraktning,

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

!= betyr ikke-lik, mens = betyr tildelt og ikke-lik. Utgangen er 0 for falsk. Ta i betraktning,

boolresultat = 'b' != 'b';
cout << result << "\n";

Utgangen er 1 for sann. Ta i betraktning,

boolresultat = 'b' != 'C';
cout << result << "\n";

Utgangen er 1 for sann.

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

Relasjonelle operatø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, , >= er på samme måte forklart.

Strengen bokstavelig som et objekt

Arrayen er en konstant peker til begynnelsen av en bestemt datatypesekvens. Tilsvarende er strengen en konstant peker til begynnelsen av en karaktersekvens. 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. De andre og tredje matriser er matriser med chars med forskjellige navn, men samme antall elementer. De andre og tredje matriser er de samme, men for navnene deres. Tekstinnholdet i den andre matrisen er avgrenset av seler; Karakterene er atskilt med komma og hver karakter er i enkelt sitater. Tekstinnholdet i den tredje matrisen er avgrenset av doble sitater; Karakterene er ikke atskilt med komma, og hver karakter er ikke i enkelt sitater. De andre og tredje matriser er to måter å produsere en streng, med den tredje veien som er den bedre måten.

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

STR er en konstant peker til det første elementet i sitt utvalg, noe som betyr at STR alltid vil peke på stedet som har karakteren, 'W' selv om verdien av 'W' endres. Størrelsen på karaktergruppen, fem elementer, forblir egentlig ikke konstant. Imidlertid kan hver av de bokstavelige verdiene endres.

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

Hva som er konstant i en matrise eller streng bokstavelig? Minneadressen til det første elementet i matrisen eller bokstavelige gjenstår som verdien av navnet (identifikatoren) på matrisen eller bokstavelig, og kan ikke endres. Vel, størrelsen på matrisen eller bokstaveligheten 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
Kvinner
kvinner

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

Definisjonsabonnement

Legg merke til at i ovennevnte definisjoner er det ikke noe heltall for abonnement. Når antallet elementer ikke lett kan bestemmes, skal av programmereren for abonnementet utelates. Uansett hva er tilfelle, skal heltallet ikke være mindre enn antall elementer i matrisen.

For strengen bokstavelig skal heltall være minst 1 høyere enn antall tegn i strengen. Dette er fordi NULL-karakteren (\ 0) alltid er lagt til av kompilatoren, på slutten av en matrise som er en streng, avgrenset av dobbeltkjørt. NULL -karakteren er ikke lagt til på slutten av den andre arrayen ovenfor, fordi det ikke er en offisiell streng. Den tredje matrisen er en offisiell streng. Følgende kode viser minimum abonnementsverdier.

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å nullkarakteren 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";

Utgangen skal nå være,

9
kvinner
kvinner

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

Konstante bokstavelige verdier

For å hindre enhver karakter i de doble sitatene som er tildelt en identifikator fra å bli endret, senere nede i programmet, kan du gå foran definisjonen med det reserverte ordet, Const, som følger:

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

Operasjoner med strenglitteraler

Likestilling

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

boolresultat = "kvinne" == "kvinne";
cout << result << '\n';

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

boolresultat = "kvinne" != "kvinne";
cout << result << '\n';

Relasjonelle operatører med strenglitteraler

Relasjonsoperatører fungerer ikke med strenglitteraler.

Rå streng bokstavelig

En rå streng bokstavelig, gjør at en streng kan vises som skrevet, ignorerer rømningssekvenser og respekterer newlines. Tenk på følgende kode:

char str [] = r "(abc \\ d efg hij
Klmn \ n "'OPQ
rst) ";
cout << str << '\n';

Utgangen er:

abc \\ d efg hij
Klmn \ n "'OPQ
RST

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

C ++ hovedstreng bokstavelige typer

røye

Karkartypen er den originale C ++ -typen og vil vanligvis lagre et tegn i 8 biter.

char16_t

Dette lagrer en karakter i 16 biter.

char32_t

Dette lagrer en karakter i 32 biter.

wchar_t

char16_t og char32_t er brede tegn. WCHAR_T er en bred karakter som er proprietær og implementeringsdefinert.

Konklusjon

En karakter bokstavelig er en enkelt karakter i enkelt sitater. En fluktsekvens er en karakter som også kan være i enkelt sitater. En streng bokstavelig er en sekvens av tegn i dobbeltkjørt. En streng bokstavelig er en rekke tegn som ender med \ 0. Likestilling og relasjonelle operatører jobber med karakterlitteraler. Likestillingsoperatørene jobber med strenglitteraler, men de relasjonelle operatørene fungerer ikke med strenglitteraler. Karakteridentifikatorer kan brukes i sammenligninger, men strengidentifikatorer skal ikke brukes i sammenligninger. En rå streng bokstavelig gjør at en streng kan vises som skrevet, ignorerer rømningssekvensene og respekterer newlines.