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';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 []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 \ VHver rømningssekvens skrives normalt enten som et tegn i enkelt sitater eller som en rømningssekvens innenfor dobbeltkvoter.
Operasjoner med karakterer
Sammenkobling
På definisjonen kan to strenglitteraler kobles sammen med plass som følger:
char ident [] = "abc" "def";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"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';== betyr lik, mens = betyr tildelt til og ikke lik. Utgangen er 1 for sann. Ta i betraktning,
boolresultat = 'b' == 'b';Utgangen er 0 for falsk. Ta i betraktning,
boolresultat = 'b' == 'c';Utgangen er 0 for falsk. Ta i betraktning,
boolresultat = 'b' != 'B';!= betyr ikke-lik, mens = betyr tildelt og ikke-lik. Utgangen er 0 for falsk. Ta i betraktning,
boolresultat = 'b' != 'b';Utgangen er 1 for sann. Ta i betraktning,
boolresultat = 'b' != 'C';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;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;Utgangen er:
9Legg 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;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;Utgangen skal nå være,
9uten 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";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";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 hijUtgangen er:
abc \\ d efg hijI 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.