Tipul Sir de Caractere_negru

download Tipul Sir de Caractere_negru

of 23

Transcript of Tipul Sir de Caractere_negru

Limbajului C++ - Suport de curs pentru clasele 9-11, profil matematica-informatica

prof.informatica Gabriela Gligor

Tipul sir de caractereDef. Sirul de caractere este o structura de date care este formata dintr-o multime ordonata de caractere care poate avea o lungime variabila. I.Implementarea sirului de caractere in C++ Implementarea sirurilor de caractere se face printr-un tablou unidimensional(vector) ale carui elemente sunt de tip character,fiecare caracter fiind reprezentat prin codul sau Ascii. Se stie: Lungimea unui vector este caracterizat prin doua lungimi: lungimea fizica(numarul de octeti alocati in memorie conform definirii) si lungimea logica(numarul de elemente cu care se lucreaza in problema,de obicei memorat intr-o variabila intreaga n). Obs: In cazul sirului de caractere lungimea logica a sirului este pusa in evidenta prin intermediul caracterului NULL sau constanta caracter \0 care are codul Ascii 0,care marcheaza sfarsitul logic al unui sir de caractere(caracterul NULL este definit in antetul stdlib.h) Ex: char sir[256]; -determina alocarea in memorie a unui spatiu de 256 octeti, din care doar in 255 se pot memora caractere,unul fiind rezervat pentru caracterul NULL. Pp.ca sir contine sirul de caractere Buna ziua=> in memorie va arata astfel:Lungimea fizica Lungimea logica

Bsir[0]

usir[1]

n

a

z

i

u

a

\0

..

sir[8] sir[9]

ceilalti 246 octeti nefolositi

Obs. 1.Intr-un sir de caractere accesul la fiecare caracter se poate face prin indice(la fel ca la tablouri). 2.Intotdeauna vectorul de caractere trebuie declarat cu un caracter mai mult decat numarul de caractere maxim pe care dorim sa-l contina acesta. 3.Un sir de caractere poate fi initializat doar la definire cu un sir constant de caractere. Ex: char sir[256]=Buna ziua; Nota:1. In acest caz s-a declarat un sir de lungime maxima 256 octeti(lungimea fizica) din care doar 10 au fost ocupati(lungimea logica),adica 9 octeti pentru caractere si un octet pentru caracterul NULL. 2. Restul octetilor neocupati vor fi completati automat la definire cu caracterul NULL. 3.Daca dorim ca lungimea fizica sa fie egala cu cea logica corespunzatoare lungimii constantei sir cu care s-a initializat la declarare atunci nu este obligatoriu specificarea lungimii fizice,acesta fiind implicita. Ex: char sir[]=Buna ziua; //lungimea alocata va fi de 10 octeti=9+1 pentru caracterul NULL 4.Dupa ce ati declarat un sir de caractere nu mai puteti sa-I atribuiti o alta costanta de tip sir de caractere deoarece se stie numele unui tablou este un pointer constant. Ex: char sir[20]; sir=Buna ziua; //Eroare 5.O costanta de tip sir de caractere chiar daca contine un singur caracter este diferit de o constanta de tip caracter deoarece se stie ca un sir de caractere intotdeauna aloca in memorie un nr. de octeti+1 octet caracterul NULL.a \0 a a

a

6.Pentru a insera intr-o constanta de tip sir de caractere caracterul trebuie sa folositi secventa escape \ Ex: coutresetiosflags(ios::skipsws)>>sir[i]; i++; } while (sir[i-1]!=\n); sir[i]=NULL; // sau sir[i]=0; sau sir[i]=\0 for (i=0;sir[i]!=\n;i++) cout