Afișarea șirurilor de caractere
Chiar dacă șirurile de caractere se declară ca orice alt tablou unidimensional, afișarea lor este mult mai ușoară.
În loc să afișăm câte un element, pe rând, șirurile de caractere pot fi afișate la fel ca variabilele simple:
char s[] = "Sir declarat implicit";
cout << s << '\n';
cout << "Al treilea caracter: " << s[2];
Sir declarat implicit
Al treilea caracter: r
Afișarea întregului șir se oprește la întâlnirea caracterului nul (marca de sfârșit de șir).
Afișarea de la un anumit index
La fel de ușoară precum afișarea întregului șir de caractere poate fi și afișarea de la un anumit index. Pentru a „sări” peste un anumit număr de caractere, adunăm un număr întreg la pointerul declarat, acest număr reprezentând un offset de caractere peste care vrem să sărim la afișare.
char s[] = "Sir declarat implicit";
cout << s + 4;
declarat implicit
Atenție la indexul ales pentru afișare. Ține de noi să ne asigurăm că acest index nu poate depăși niciodată dimensiunea șirului de caractere. Afișarea peste dimensiunea declarată ar cauza un comportament imprevizibil al afișării.
Importanța caracterului nul
În contextul șirurilor de caractere se pune mereu accent pe existența mărcii de sfârșit de șir.
Pentru afișare, funcția cout afișează toate caracterele până când întâlnește caracterul nul.
Dacă acesta lipsește, afișarea nu se oprește și continuă să returneze caractere aleatorii pe care le găsește în memorie. La acest lucru ne referim de fapt prin ante-menționatul „comportament imprevizibil”.
Un exemplu de comportament imprevizibil cauzat de lipsa caracterului nul ar putea fi următorul:
char s[5] = {'S', 'a', 'l', 'u', 't'}; // declarare implicita, nu exista '\0'
cout << s;
Salut&%~
În exemplu am presupus că, la un moment dat, funcția cout a întâlnit în memorie un caracter \0 după alte trei caractere aleatorii.