C ++

Sådan bruges C ++ String Literal

Sådan bruges C ++ String Literal
Computertastaturet har tegn på. Når du trykker på en tast, ser du tegnet på skærmen. Bemærk: plads er også et tegn. En streng bogstavelig er en sekvens af tegn. Denne artikel forklarer, hvordan du bruger C ++ strenglitteratur. Du bør vide om C ++ - arrays og markører for at forstå denne artikel.

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 \ v

Hver flugtsekvens er normalt skrevet enten som et tegn inden for enkelt anførselstegn eller som en udgangssekvens inden for dobbelt anførselstegn.

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:

9
kvindelige 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,

9
Kvinder
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 hij
klmn \ n "'opq
første) ";
cout << str << '\n';

Outputtet er:

abc \\ ef efg hij
klmn \ 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

Sådan bruges AutoKey til at automatisere Linux-spil
AutoKey er et desktopautomatiseringsværktøj til Linux og X11, programmeret i Python 3, GTK og Qt. Ved hjælp af dets scripting og MACRO-funktionalitet ...
Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...