C ++

Cum se folosește șirul literal C ++

Cum se folosește șirul literal C ++
Tastatura computerului are caractere imprimate pe ele. Când apăsați o tastă, vedeți caracterul pe ecran. Notă: spațiul este, de asemenea, un personaj. Un literal șir este o secvență de caractere. Acest articol explică modul de utilizare a literelor șirului C ++. Ar trebui să știți despre matricele și indicatorii C ++ pentru a înțelege acest articol.

Caracterul Literal

Un caracter literal este un caracter între ghilimele unice. Asa de,

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

sunt toate definiții diferite ale personajelor. Rețineți că o cifră între ghilimele este un caracter și nu un număr întreg.

O secvență de evadare, cum ar fi \ ”(a se vedea mai jos) între ghilimele simple, este un caracter. Asa de,

char ident1 = '"';

este un personaj.

Un singur simbol între ghilimele duble nu este un caracter; este un șir de un caracter. Deci, „A” sau „c” sau „2” nu este un caracter, ci este un șir de câte un caracter.

Variabila unui caracter poate fi realocată, ulterior în jos în program, după cum urmează:

char ident = 'x';
ident = 'Y';

Pentru a opri modificarea unui caracter atribuit unui identificator, mai târziu în program, precedeți definiția cu cuvântul rezervat, const, după cum urmează:

const char ident = 'd';

Variabila, ident se spune că este doar în citire.

Șir literal

Un literal șir este o secvență de caractere între ghilimele duble. Asa de,

char ident1 [] = "Te iubesc"; char ident2 [] = "Urăsc 3 dintre voi"; char ident3 []
= "noi suntem lumea"; char ident4 [] = "Hello World!";

sunt toate definiții diferite ale literelor șirului. Rețineți utilizarea ghilimelelor duble. Nu există nimic ca o variabilă obișnuită pentru un șir. Un literal șir este o matrice de caractere, unde în loc să delimitați cu , secvența este delimitată cu „”. Caracterele nu sunt separate prin virgule. Orice număr mai mare decât numărul de caractere din șirul literal poate fi plasat între paranteze. Cu toate acestea, este mai bine să lăsați parantezele goale goale.

Un singur caracter între ghilimele duble nu este un caracter; este un șir de un caracter. Deci, „A” sau „c” sau „2” nu este un caracter, ci un șir de câte un caracter.

O variabilă șir nu permite reatribuirea literalului complet, mai târziu în program - vezi mai jos. Cu toate acestea, caracterele individuale pot fi realocate - vezi mai jos.

Citat simplu și dublu în caracter sau literal

Pentru a avea un singur citat ca personaj, faceți ceva de genul,

char ident = '\' ';

Pentru a avea un ghilimel dublu ca personaj într-un șir literal, faceți ceva de genul,

char ident [] = "ab" cd ";

Backslash-ul este utilizat într-o secvență de evadare, pentru a evita conflictul cu delimitatorii. Pentru a avea un citat dublu ca personaj, nu este nevoie de bară inversă: '”' este în regulă. Pentru a avea un singur citat într-un șir literal, nu este nevoie de bară inversă: „ab'cd” este în regulă.

Întrucât bară inversă este utilizată pentru a scăpa de un caracter, trebuie să fie evadată cu o altă bară inversă atunci când este utilizată ca caracter sau într-un șir literal.

Secvență de evadare

O secvență de evadare este una dintre:

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

Fiecare secvență de scăpare este în mod normal tastată fie ca un caracter în ghilimele simple, fie ca o secvență de scăpare în ghilimele duble.

Operații cu caractere

Concatenare

La definiție, două litere șir pot fi unite cu spațiu după cum urmează:

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

Ieșirea este: abcdef . Această definiție poate fi extinsă la mai mult de două litere. Notă: declarația este o definiție, nu doar o sarcină. Definiția poate continua până la următoarea linie, cu spațiu care separă liniile după cum urmează:

char ident [] = "abc" "def"
„ghi”;
cout << ident << "\n";

Rezultatul este, abcdefghi.

Notă: Caracterele nu pot fi concatenate în acest fel, deoarece ghilimelele unice pentru caracter nu pot avea mai mult de un simbol.

Operatori de egalitate

Aceleași caractere în același caz sunt egale. Nu sunt egali dacă nu sunt în același caz. Considera,

bool result = 'B' == 'B';
cout << result << "\n";

== înseamnă egal, în timp ce = înseamnă atribuit și nu egal. Ieșirea este 1 pentru adevărat. Considera,

bool result = 'B' == 'b';
cout << result << "\n";

Ieșirea este 0 pentru fals. Considera,

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

Ieșirea este 0 pentru fals. Considera,

bool result = 'B' != 'B';
cout << result << "\n";

!= înseamnă nu-egal, în timp ce = înseamnă atribuit și nu-egal. Ieșirea este 0 pentru fals. Considera,

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

Ieșirea este 1 pentru adevărat. Considera,

bool result = 'b' != 'c';
cout << result << "\n";

Ieșirea este 1 pentru adevărat.

Deci, == și != sunt operatori de egalitate.

Operatori relaționali

Pentru caracterele obișnuite în C ++, în ordine crescătoare, numerele vin înaintea literelor mari, care vin înainte de literele mici.

Asa de < will return true (1) when the left character is less than the right character. The other relational operators, <=, >, > = sunt explicate în mod similar.

Șirul Literal ca obiect

Matricea este un indicator constant către începutul unei anumite secvențe de tip de date. În mod similar, șirul este un indicator constant către începutul unei secvențe de caractere. Comparați următoarele definiții:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "femeie";

Prima matrice este o matrice de inți și are cinci elemente. A doua și a treia matrice sunt matrice de caractere cu nume diferite, dar același număr de elemente. A doua și a treia matrice sunt aceleași, dar pentru numele lor. Conținutul textului celui de-al doilea tablou este delimitat de paranteze; caracterele sunt separate prin virgule și fiecare caracter este între ghilimele unice. Conținutul textului celui de-al treilea tablou este delimitat prin ghilimele duble; caracterele nu sunt separate prin virgule și fiecare caracter nu se află între ghilimele unice. A doua și a treia matrice sunt două modalități de a produce un șir, a treia modalitate fiind cea mai bună.

arr este un indicator constant către primul element al matricei sale, ceea ce înseamnă că arr va indica întotdeauna locația care are întregul, 3 chiar dacă valoarea lui 3 este modificată. Dimensiunea matricei, cinci elemente, nu rămâne cu adevărat constantă. Cu toate acestea, fiecare dintre valorile tabloului poate fi modificată.

str este un indicator constant către primul element al matricei sale, adică str va indica întotdeauna locația care are caracterul, „w” chiar dacă valoarea „w” este modificată. Dimensiunea matricei de caractere, cinci elemente, nu rămâne cu adevărat constantă. Cu toate acestea, fiecare dintre valorile literalului poate fi modificată.

stri este un indicator constant către primul element al literalului său (matrice), adică stri va indica întotdeauna locația care are caracterul, w chiar dacă valoarea lui w este modificată. Dimensiunea șirului literal (matrice), cinci elemente, nu rămâne cu adevărat constantă. Cu toate acestea, fiecare dintre valorile literalului poate fi modificată.

Ceea ce este constant într-un literal sau un șir? Adresa de memorie a primului element al matricei sau literalului rămâne ca valoarea numelui (identificatorului) matricei sau literalului și nu poate fi modificată. Ei bine, dimensiunea matricei sau a literalului nu rămâne cu adevărat constantă. Fiecare valoare din matrice sau literal poate fi modificată. Următorul cod arată cum a fost modificat al patrulea element al fiecărei matrice:

int arr [] = 3, 4, 5, 6, 7;
char str [] = 'w', 'o', 'm', 'a', 'n';
char stri [] = "femeie";
arr [3] = 9;
str [3] = 'e';
stri [3] = 'e';
cout << arr[3] << '\n';
cout << str << '\n';
cout << stri << '\n';

Ieșirea este:

9
femei
femei

Rețineți că elementele unui șir literal definit, ca și pentru a treia definiție de mai sus, pot fi accesate cu indexul matricei (subscript). Motivul pentru a doua linie a ieșirii este dat mai jos.

Definiție Indice

Rețineți că, în definițiile de mai sus, nu există un număr întreg pentru indiciu. Când numărul de elemente nu poate fi determinat cu ușurință, de către programator, numărul întreg al indicelui ar trebui omis. Oricare ar fi cazul, întregul nu trebuie să fie mai mic decât numărul de elemente din matrice.

Pentru literalul șirului, întregul ar trebui să fie cu cel puțin 1 mai mare decât numărul de caractere din șir. Acest lucru se datorează faptului că caracterul nul (\ 0) este întotdeauna adăugat de compilator, la sfârșitul unui tablou care este un șir, delimitat prin ghilimele duble. Caracterul nul nu este adăugat la sfârșitul celei de-a doua matrice de mai sus, deoarece nu este un șir oficial. A treia matrice este un șir oficial. Următorul cod arată valorile minime ale indicelui.

int arr [5] = 3, 4, 5, 6, 7;
char str [5] = 'w', 'o', 'm', 'a', 'n';
char stri [6] = "femeie";

Pentru a face a doua definiție un șir oficial, caracterul nul trebuie adăugat după cum urmează:

int arr [5] = 3, 4, 5, 6, 7;
char str [6] = 'w', 'o', 'm', 'a', 'n', '\ 0';
char stri [6] = "femeie";

Rezultatul ar trebui să fie acum,

9
femei
femei

fără a doua „femeie”. Rețineți că indicele corespunzător pentru a doua matrice este 6 și nu 5 așa cum a fost.

Valori Literal Constant

Pentru a opri modificarea oricărui caracter din ghilimelele alocate unui identificator, ulterior în jos în program, precede definiția cu cuvântul rezervat, const, după cum urmează:

const char ident [] = "Te iubesc";

Operații cu litere de șir

Operațiuni de egalitate

Operatorii de egalitate sunt == și != . Când se compară variabilele (identificatorii) a două șiruri, indicatorii (adresele) literelor ajung să fie comparate; asta e gresit. Pentru a compara șirurile, literele trebuie comparate, ca în codul următor:

bool result = "femeie" == "femeie";
cout << result << '\n';

Ieșirea este 1 pentru adevărat. Comparația se face în modul dicționar, dar cu numerele care vin mai întâi în ordine crescătoare, înainte de majuscule, care vin înainte de litere mici. Ieșirea următorului cod este 0, pentru fals.

bool result = "femeie" != „femeie”;
cout << result << '\n';

Operatori relaționali cu litere de șir

Operatorii relaționali nu funcționează cu literele șirului.

Șir literal Literal

Un literal șir brut, permite afișarea unui șir ca fiind tastat, ignorând secvențele de evacuare și respectând liniile noi. Luați în considerare următorul cod:

char str [] = R "(abc \\ d efg hij
klmn \ n "'opq
primul) ";
cout << str << '\n';

Ieșirea este:

abc \\ d efg hij
klmn \ n "'opq
primul

În cod, șirul literal literal începe cu R, urmat de ”și ( . Se termină cu) și „.

C ++ Principalele tipuri de caractere literale

char

Tipul char este tipul C ++ original și ar stoca de obicei un caracter în 8 biți.

char16_t

Aceasta stochează un caracter în 16 biți.

char32_t

Aceasta stochează un caracter în 32 de biți.

wchar_t

char16_t și char32_t sunt caractere largi. wchar_t este un caracter larg, proprietar și definit de implementare.

Concluzie

Un caracter literal este un singur caracter între ghilimele unice. O secvență de evadare este un caracter care poate fi, de asemenea, între ghilimele unice. Un literal șir este o secvență de caractere între ghilimele duble. Un literal șir este o matrice de caractere care se termină cu \ 0. Egalitatea și operatorii relaționali funcționează cu litere de caractere. Operatorii de egalitate funcționează cu literele șirului, dar operatorii relaționali nu funcționează cu literele șirului. Identificatorii de caractere pot fi folosiți în comparații, dar identificatorii de șiruri nu ar trebui folosiți în comparații. Un literal șir brut permite afișarea unui șir ca fiind tastat, ignorând secvențele de evacuare și respectând liniile noi.

Chrys

Motoare de jocuri gratuite și open source pentru dezvoltarea jocurilor Linux
Acest articol va acoperi o listă de motoare de jocuri gratuite și open source care pot fi utilizate pentru dezvoltarea jocurilor 2D și 3D pe Linux. Ex...
Tutorial Shadow of the Tomb Raider pentru Linux
Shadow of the Tomb Raider este a douăsprezecea completare a seriei Tomb Raider - o franciză de jocuri de acțiune-aventură creată de Eidos Montreal. Jo...
Cum se mărește FPS în Linux?
FPS înseamnă Cadre pe secundă. Sarcina FPS este de a măsura rata de cadre în redările video sau în performanțele jocului. În cuvinte simple, numărul d...