Karakter bogstavelig
En bogstavelig karakter er en karakter i enkelte citater. Så,
char ident1 = 'A'; char ident2 = 'b'; char ident3 = '4'; char ident4 = '6';er alle forskellige definitioner af tegn. Bemærk, at et ciffer i enkelte anførselstegn er et tegn og ikke et heltal.
En flugtsekvens 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 af et tegn. Så "A" eller "c" eller "2" er ikke et tegn, men er en streng af et tegn hver.
Variablen for en char kan tildeles senere senere i programmet som følger:
char ident = 'x';ident = 'Y';
For at forhindre, at et tegn, der er tildelt en identifikator, ændres senere nede i programmet, går definitionen med det reserverede ord, const, som følger:
const char ident = 'd';Variablen ident siges at være skrivebeskyttet.
String Literal
En streng bogstavelig er en sekvens af tegn med dobbelt anførselstegn. Så,
char ident1 [] = "Jeg elsker dig"; char ident2 [] = "Jeg hader tre af jer"; char ident3 []= "vi er verden"; char ident4 [] = "Hej verden!";
er alle forskellige definitioner af strenglitteraler. Bemærk brugen af dobbelt citater. Der er intet som en almindelig variabel for en streng. En streng-bogstavelig er en række tegn, hvor sekvensen i stedet for at afgrænse med afgrænses med “”. Tegnene adskilles ikke med kommaer. Ethvert antal større end antallet af tegn i strengen bogstaveligt kan placeres i de firkantede parenteser. Det er dog bedre at lade de firkantede parenteser være tomme.
Et enkelt tegn i dobbelt anførselstegn er ikke et tegn; det er en streng af et tegn. Så "A" eller "c" eller "2" er ikke et tegn, men en streng af et tegn hver.
En strengvariabel tillader ikke omfordeling af den komplette bogstavelige, senere nede i programmet - se nedenfor. Dog kan individuelle tegn tildeles igen - se nedenfor.
Enkelt og dobbelt citat i karakter eller bogstavelig
For at have et enkelt tilbud som et tegn, gør noget lignende,
char ident = '\' ';For at have et dobbelt citat som et tegn i en streng bogstavelig, skal du gøre noget lignende,
char ident [] = "ab" cd ";Backslash bruges i en escape-sekvens for at undgå konflikt med afgrænsere. For at have et dobbelt citat som tegn er der ikke behov for tilbageslag: '' 'er okay. For at have et enkelt citat i en streng bogstaveligt er der ikke behov for tilbageslag: ”ab'cd” er okay.
Da backslash bruges til at undslippe et tegn, skal det undslippes med et andet backslash, når det bruges som et tegn eller i en streng bogstavelig.
Escape sekvens
En flugtsekvens er en af:
\ '"\? \\ \ a \ b \ f \ n \ r> \ t \ vHver flugtsekvens er normalt skrevet enten som et tegn inden for enkelt anførselstegn eller som en udgangssekvens inden for dobbelt anførselstegn.
- \ ': bruges som et enkelt citattegn inden for enkelte citater.
- \ ”: Bruges som et dobbelt citattegn inden for en bogstavelig.
- \? : siden ? er en reserveret karakter, skal den undslippes bogstaveligt.
- \\: backslash skal undslippes som et tegn eller i en streng bogstavelig for ikke at resultere i en anden betydning.
- \ a: lyder en alarmklokke en gang, når den bruges som et tegn eller inden for en streng bogstavelig.
- \ b: resulterer som et backspace i displayet inden for en streng bogstavelig og tager det forrige tegn af.
- \ f: får den næste side til at blive ført til printeren, når den bruges som et tegn eller inden for en bogstav.
- \ r: returnerer markøren, hvor det næste tegn skal udskrives, men inden for den aktuelle linje.
- \ n: returnerer markøren til begyndelsen af den næste linje eller bare til den næste linje afhængigt af operativsystemet.
- \ t: opretter en vandret fane.
- \ v: opretter en lodret fane.
Operationer med tegn
Sammenkædning
Per definition kan to strenglitteraturer forbindes med mellemrum som følger:
char ident [] = "abc" "def";cout << ident << "\n";
Outputtet er: abcdef . Denne definition kan udvides til mere end to bogstaver. Bemærk: udsagnet er en definition, ikke kun en opgave. Definitionen kan endda fortsætte til den næste linje med mellemrum, der adskiller linjerne som følger:
char ident [] = "abc" "def""ghi";
cout << ident << "\n";
Output er, abcdefghi.
Bemærk: Tegn kan ikke sammenkædes på denne måde, da de enkelte anførselstegn for tegnet ikke kan have mere end et symbol.
Ligestillingsoperatører
Samme tegn i samme sag er ens. De er ikke lige, hvis de ikke er i samme sag. Overveje,
bool resultat = 'B' == 'B';cout << result << "\n";
== betyder lig, mens = betyder tildelt og ikke lig. Outputtet er 1 for sandt. Overveje,
bool resultat = 'B' == 'b';cout << result << "\n";
Outputtet er 0 for falsk. Overveje,
bool resultat = 'b' == 'c';cout << result << "\n";
Outputtet er 0 for falsk. Overveje,
bool resultat = 'B' != 'B';cout << result << "\n";
!= betyder ikke-lig, mens = betyder tildelt til og ikke ikke-lig. Outputtet er 0 for falsk. Overveje,
bool resultat = 'B' != 'b';cout << result << "\n";
Outputtet er 1 for sandt. Overveje,
bool resultat = 'b' != 'c';cout << result << "\n";
Outputtet er 1 for sandt.
Så == og != er ligestillingsoperatører.
Relationelle operatører
For almindelige tegn i C ++, i stigende rækkefølge, kommer tallene foran store bogstaver, som kommer før små bogstaver.
Så < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = forklares på samme måde.
Strengen bogstavelig som et objekt
Arrayet er en konstant markør til begyndelsen af en bestemt datatypesekvens. På samme måde er strengen en konstant markør til begyndelsen af en tegnsekvens. Sammenlign følgende definitioner:
int arr [] = 3, 4, 5, 6, 7;char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "kvinde";
Den første matrix er en række ints og har fem elementer. Det andet og tredje array er arrays af tegn med forskellige navne, men det samme antal elementer. Den anden og tredje række er ens, men for deres navne. Tekstindholdet i det andet array afgrænses af parenteser; tegnene er adskilt med kommaer, og hvert tegn er i enkelt anførselstegn. Tekstindholdet i det tredje array afgrænses af dobbelt anførselstegn; tegnene adskilles ikke med kommaer, og hvert tegn er ikke i enkelte anførselstegn. Den anden og tredje række er to måder at producere en streng på, hvor den tredje måde er den bedre måde.
arr er en konstant markør til det første element i dets matrix, hvilket betyder, at arr altid vil pege på placeringen, der har heltal, 3 selvom værdien af 3 ændres. Matrixens størrelse, fem elementer, forbliver ikke rigtig konstant. Hver af matrixens værdier kan dog ændres.
str er en konstant markør til det første element i dets array, hvilket betyder at str altid vil pege på placeringen, der har tegnet, 'w', selvom værdien af 'w' ændres. Størrelsen på tegnarrayet, fem elementer, forbliver ikke rigtig konstant. Imidlertid kan hver af bogstavets værdier ændres.
stri er en konstant markør til det første element i dets bogstavelige (array), hvilket betyder at stri altid vil pege på placeringen, der har tegnet, w selvom værdien af w ændres. Størrelsen på strengen bogstavelig (array), fem elementer, forbliver ikke rigtig konstant. Imidlertid kan hver af værdierne for den bogstavelige ændres.
Hvad der er konstant i et array eller en streng bogstavelig? Hukommelsesadressen på det første element i arrayet eller bogstaveligt forbliver som værdien af navnet (identifikatoren) på arrayet eller bogstaveligt og kan ikke ændres. Nå, størrelsen på arrayet eller bogstaveligt forbliver ikke rigtig konstant. Hver værdi i arrayet eller bogstaveligt kan ændres. Den følgende kode viser, hvordan det fjerde element i hver af arrays er blevet ændret:
int arr [] = 3, 4, 5, 6, 7;char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "kvinde";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';
Outputtet er:
9kvindelige kvinder
Kvinder
Bemærk, at elementerne i en defineret streng litteral, som for den tredje definition ovenfor, kan fås med array-indekset (abonnement). Årsagen til den anden linje i output er angivet nedenfor.
Definition Abonnement
Bemærk, at der i ovenstående definitioner ikke er noget heltal for abonnement. Når antallet af elementer ikke let kan bestemmes af programmøren, skal heltalet for abonnementet udelades. Uanset hvad der er tilfældet, bør heltal ikke være mindre end antallet af elementer i arrayet.
For strengen bogstaveligt skal heltal være mindst 1 højere end antallet af tegn i strengen. Dette skyldes, at nulstegnet (\ 0) altid tilføjes af compileren i slutningen af en matrix, der er en streng, afgrænset af dobbelt-citater. Nulltegnet tilføjes ikke i slutningen af det andet array ovenfor, fordi det ikke er en officiel streng. Den tredje matrix er en officiel streng. Den følgende kode viser minimumsværdierne for abonnement.
int arr [5] = 3, 4, 5, 6, 7;char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "kvinde";
For at gøre den anden definition til en officiel streng skal nulltegnet tilføjes som følger:
int arr [5] = 3, 4, 5, 6, 7;char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "kvinde";
Outputtet skal nu være,
9Kvinder
Kvinder
uden den anden "kvinder". Bemærk, at det tilsvarende abonnement for det andet array er 6 og ikke 5 som det var.
Konstant bogstavelige værdier
For at forhindre, at et tegn i de dobbelte anførselstegn, der er tildelt en identifikator, ændres senere ned i programmet, går definitionen med det reserverede ord, const, som følger:
const char ident [] = "Jeg elsker dig";Operationer med strenglitteratur
Ligestillingsoperationer
Ligestillingsoperatørerne er == og != . Når variabler (identifikatorer) for to strenge sammenlignes, er det bogstavernes pointer (adresser), der ender med at blive sammenlignet; det er forkert. For at sammenligne strenge skal bogstaverne sammenlignes som i følgende kode:
bool resultat = "kvinde" == "kvinde";cout << result << '\n';
Outputtet er 1 for sandt. Sammenligningen udføres på ordbogen, men med tal, der kommer først i stigende rækkefølge, før store bogstaver, som kommer før små bogstaver. Outputtet fra den følgende kode er 0 for falsk.
bool resultat = "kvinde" != "kvinde";cout << result << '\n';
Relationsoperatører med strenglitteratur
Relationsoperatører arbejder ikke med strengbogstaver.
Rå streng bogstaveligt
En rå streng bogstavelig, tillader en streng at blive vist som skrevet, ignorerer escape-sekvenser og respekterer nye linjer. Overvej følgende kode:
char str [] = R "(abc \\ ef efg hijklmn \ n "'opq
første) ";
cout << str << '\n';
Outputtet er:
abc \\ ef efg hijklmn \ n "'opq
første
I koden begynder den rå streng streng med R, efterfulgt af ”og ( . Det slutter med) og “.
C ++ Hovedstreng bogstavelige typer
char
Char-typen er den originale C ++ -type og gemmer typisk et tegn i 8 bit.
char16_t
Dette gemmer et tegn i 16 bits.
char32_t
Dette gemmer et tegn i 32 bits.
wchar_t
char16_t og char32_t er brede tegn. wchar_t er en bred karakter, der er proprietær og implementeringsdefineret.
Konklusion
En bogstavelig karakter er et enkelt tegn i enkelte citater. En flugtsekvens er et tegn, der også kan være i enkelte citater. En streng bogstavelig er en sekvens af tegn med dobbelt anførselstegn. En streng-bogstav er en række tegn, der slutter med \ 0. Ligestillings- og relationelle operatører arbejder med karakterbogstaver. Ligestillingsoperatørerne arbejder med strengbogstaver, men de relationelle operatører arbejder ikke med strengbogstaver. Tegnidentifikatorer kan bruges i sammenligninger, men strengidentifikatorer bør ikke bruges i sammenligninger. En rå streng bogstavelig gør det muligt for en streng at blive vist som skrevet, ignorerer escape-sekvenserne og respekterer nye linjer.
Chrys