Citirea și afișarea șirurilor de caractere

Pentru citirea unui șir de caractere se poate folosi, desigur, maniera folosită la tablouri, citind elementele pe rând. În această situație trebuie avut în vedere că terminatorul nu este plasat automat și el ar trebui pus explicit în coada șirului.

Mai ușor, șirurile de caractere pot fi citite, cu adăugarea automată a caracterului NULL, în maniera specifică pointerilor, într-o sintaxă de forma: cin>>s; În această situație există, de asemenea, un dezavantaj, anume că citirea se termină la întâlnirea primului spațiu.

Cel mai convenabil mod de a citi șirurile de caractere, fără a omite spațiile goale și terminatorul, este cu ajutorul metodelor get sau getline.

Sintaxa este: cin.get(id_sir_caractere, nr_caractere, caracter_delimitator); cin.getline(id_sir_caractere, nr_caractere, caracter_delimitator); În ambele cazuri caracterul delimitator implicit este ‘\n’.

Iată un exemplu de utilizare a celor două metode: char s[100], t[100]; cin.get(s, 100, 'q'); cin.get; cin.getline(t, 100, 'q'); cout<<"citire cu get: "<<s<<'\n'<<"citire cu getline: "<<t; Vom observa, rulând, că obținem același efect. Totuși, între cele două citiri există un apel al metodei get, fără parametri. Acest lucru explică diferența dintre cele două metode, anume că, get păstrează în flux caracterul delimitator, pe când getline îl elimină. Faptul determină, în cazul folosirii primei funcții, necesitatea de a folosi între două apeluri ale sale, un apel fără parametri, pentru a scoate de flux caracterul delimitator. Pentru afișare lucrurile stau mai simplu, fiind suficientă, cum am văzut în exemplul anterior, funcția cout.