Citirea/afisarea sirurilor de caractere – C++

Sirurile de caractere pot fi initializate inca de la declarare sau citite pe parcursul programului.

a) Citirea unui sir de caractere se poate face ca citirea oricarui tablou, intr-un for, caracter cu caracter (desi nu este recomandata). In acest caz, terminatorul de sir nu este memorat automat, el trebuie pus explicit dupa ultimul caracter din sir.

b) Se poate face pur si simplu, folosind ‘cin>>’ . Caracterul nul este adaugat automat. Dezavantajul este ca in acest fel nu se pot citi siruri care contin mai multe cuvinte separate prin spatii. Citirea sirului se sfarseste la intalnirea primului caracter blank (de ex, daca se citeste “ora de informatica”, variabila c va retine numai “ora”).

c) Se poate folosi o functie speciala pentru citirea sirurilor de caractere, inclusa in biblioteca <string.h> (varianta recomandata).

Exemplu:

        Functia ‘cin.get’ citeste un sir de caractere sau pana cand au fost citite nr-1 caractere, sau daca s-a intalnit caracterul x. Al treilea parametru poate lipsi, caz in care el este implicit caracterul ‟\n‟ (new line). Sunt citite si caracterele albe, caracterul nul este inserat automat iar caracterul transmis ca ultim parametru nu este inserat in sir.

Functia cin.get( ) fara parametri are rolul de a citi un caracter (alb sau nu).
Functia cin.get(char c) are rolul de a citi un caracter (alb sau nu) pe care il incarca in variabila c.
Observatie: In cazul utilizarii repetate a functiei cin.get(a,nr,x), dupa fiecare folosire trebuie citit caracterul de la sfarsitul fiecarui sir , adica ‟\n‟ (in caz contrar, acest caracter va fi incarcat la inceputul urmatorului sir, a carui citire se termina la caracterul Enter, deci citirea celui de-al doilea sir se termina inainte de a incepe, iar al doilea sir va fi sirul vid). Aceasta citire a caracterului ‟\n‟ se realizeaza folosind cin.get() fara parametri.

Video de pe canalul nostru de YouTube in care explicam cum putem citi si afisa siruri de caractere:

Leave a Reply

Your email address will not be published. Required fields are marked *