Lecția 35

Nu uitați, expresia static_cast ia ca intrare. Dacă folosim o variabilă în expresia - că variabila este prelucrată pentru a produce o valoare, care este apoi convertit într-un tip nou. Acest proces de conversie nu afectează variabila în sine, cu valoarea ei! În exemplul de mai sus, CH variabilă este o variabilă de tip char, și are valoarea sa inițială (așa cum se arată pe ultima linie a producției).

De asemenea, în distribuția statică nu există nici un control privind intervalul de valori, așa că, dacă încercați să utilizați numere care sunt prea mari sau prea mici pentru tipul decapotabil, va exista o depășire.

Pentru mai multe informații despre cast statice vor fi discutate în clase separate.

Introducerea caracterelor

În continuare programul solicită utilizatorului să introducă un simbol. Apoi afișează caracterul și codul său ASCII:

„Acest text este citat“
Acest șir conține un singur backslash \
6F în hex este char 'o'

NEWLINE, (\ n) vs. std :: endl. Ce să utilizați?

Este posibil să fi observat că în ultimul exemplu, am folosit \ n pentru a muta cursorul la linia următoare. Dar am putea folosi std :: endl. Care este diferența dintre ele? Acum vom înțelege.

Când vom folosi std :: cout, datele de ieșire pot fi tamponate, de exemplu, std :: cout nu poate trimite date la o concluzie imediat. În schimb, ea le poate pleca cu tine o vreme. Acest lucru se face din motive de performanță.

Și „\ n“, și std :: endl Ambele muta cursorul la linia următoare. În plus, std :: endl va asigura, de asemenea, retragerea tuturor datelor care sunt în coada de așteptare înainte de a continua.

Deci, când să folosească '\ n', și când std :: endl? răspundă:

folosind std :: endl. atunci când doriți ca datele să fie afișate imediat (de exemplu, atunci când scrieți o înregistrare într-un fișier sau pentru a actualiza bara de progres). Rețineți că această opțiune poate duce la o ușoară scădere a performanței, mai ales în cazul în care înregistrarea de pe dispozitivul este lent (de exemplu, fișierele de pe înregistrarea discului).

Utilizați „\ n“, în alte cazuri.

Notă: În lecțiile noastre, vom folosi „\ n“ în loc de std :: endl, deoarece pentru ieșire la consola - este aproape întotdeauna cea mai bună alegere.

Dar alte tipuri de char: wchar_t, char16_t și char32_t?

wchar_t ar trebui să fie evitată, în aproape toate cazurile (cu excepția cazului când există o interacțiune cu Windows API). Dimensiunea acesteia este determinată în cursul punerii în aplicare și nu este de încredere. Acest tip de mulți, nu fără motiv, nu-mi place.

Precum și standardul ASCII utilizează numere întregi pentru a reprezenta caractere englezești, și alte standarde de codificare folosesc numere întregi pentru a reprezenta caractere în alte limbi. Cel mai bine cunoscut standardul (după ASCII) - Unicode. în care mai mult de 110 000 de numere întregi pentru a reprezenta caractere de limbi diferite. Există următoarele moduri de codare Unicode: UTF-32 - 32 biți necesită să reprezinte un caracter, UTF-16 - necesită 16 biți, UTF-8 - necesită 8 biți.

char16_t și char32_t au fost adăugate la C ++ 11 pentru a sprijini pe 16 biți și 32 de biți caractere Unicode (caractere de 8 biți și tip char așa sprijinit).

Care este diferența între ghilimele simple și duble atunci când scrieți caractere?

După cum știți deja, personajele sunt întotdeauna plasate în ghilimele simple (de exemplu, „o“, „+“, „5“). variabilă tip Char poate reprezenta doar un singur caracter (de exemplu, o literă, un simbol +, numărul 5). Ceva de genul asta nu este permis: