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 \ vHver rømningssekvens blir vanligvis skrevet enten som et tegn i enkelt anførselstegn eller som en rømningssekvens innen dobbelt anførselstegn.
- \ ': brukes som et enkelt sitattegn, innenfor enkelt anførselstegn.
- \ ”: Brukes som et dobbelt anførselstegn, innen en bokstavelig.
- \? : siden ? er en reservert karakter, bør den slippes bokstavelig.
- \\: backslash bør unnslippes som et tegn eller i en streng bokstavelig, for ikke å resultere i noen annen betydning.
- \ a: høres en alarmklokke en gang, når den brukes som et tegn eller i en streng bokstavelig.
- \ b: resulterer som et tilbaketast i displayet i en streng bokstavelig, og tar av forrige tegn.
- \ f: fører til at neste side mates til skriveren når den brukes som et tegn eller bokstavelig.
- \ r: returnerer markøren, der neste tegn 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 vannrett fane.
- \ v: oppretter en vertikal fane.
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:
9kvinnekvinner
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,
9kvinner
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 hijklmn \ n "'opq
første) ";
cout << str << '\n';
Utgangen er:
abc \\ d efg hijklmn \ 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