Siruri de caractere
O constanta de tip sir de caractere de declara intre doua caractere “.
In memoria interna, o constanta de acest tip este retinuta sub forma unui vector de caractere.
Fiecare componenta a sirului (incepand cu cea de indice 0) retine codul ASCII al caracterului pe care il memoreaza. Conventia este ca ultimul octet sa retina 0 (codul caracterului nul). Caracterul nul este memorat automat. Trebuie rezervate lungimea_sirului+1 caractere char (+1 pentru caracterul nul).
Limbajul C/C++ permite initializarea unui tablou de caractere printr-o constanta sir, care include automat caracterul null.
Exemple :
char vect[13]=”clasa a XI-a”; //s-au rezervat 13 octeti. Un octet este rezervat pentru caracterul nul
char vect[]=”clasa a XI-a”; //compilatorul face calculul numarului de octeti necesari
char vect[50]=”clasa a XI-a”; //s-au rezervat mai multi octeti decat era necesar; 37 octeti raman neocupati
Sirurile de caractere sunt de fapt tablouri de caractere, care au ca ultim element un terminator de sir, caracterul null.
Exemple:
declaratii
char tablouc[12] = {’c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-','A'}; // tablou de caractere
char sirc[13] = {’c’, ’l’, ’a’, ’s’, ’a’,' ','a',' ','X','I','-','A','\0'}; // sirul de caractere clasa a XI-a
char sc0[5] = ”clasa a XI-a”;//echivalent cu sirul sc
char sc00[] = ”clasa a XI-a”;//echivalent cu sirul sc
char sc1[5] = ”clasa a XI-a”;
char sir[50];
afisari si atribuiri
cout<<sirc<<"\n"; //afiseaza clasa a XI-a
cout<<tablouc<<"\n"; //eroare: tabloul de caractere poate fi afisat ca sir
cout<<s<<endln; // eroare: tablou neinitializat
cout<<sc0[0]; // afiseaza primul caracter din sirul sc0 - c
cout<<sc1[4]; // afiseaza al patrulea caracter din sirul sc1 – a
sc0[0]=’p’; // elementului din sir de indice 0 i se atribuie valoarea ‘p’;
cout<<sc0<<endln; // se afiseaza plasa a XI-a
sc0[4]='C';
cout<<sc0<<endln; // se afiseaza plaCa a XI-a