Obiectul cin

După cum afirmam mai sus, cin este un obiect al clasei iostream, fiind, deci, însoțit de mai multe metode specifice.

Functia membru get poate fi utilizată fără parametri pentru a prelua un singur caracter din intrare. În această situație este, evident, recomandată utilizarea operatorului >>, care permite preluarea mai multor intrări. Funcția este utilă, însă, pentru prealuarea șirurilor de caractere, caz în care operatorul >> nu este eficient, deoarece interpretează spațiile ca separatori. Sintaxa este, în acest caz: cin.get(sir_caractere, lungime, caracter_terminal); Primul parametru, sir_caractere, este un pointer la o zona de memorie in care va fi depus sirul de carctere. Al doilea parametru, lungime, este un intreg ce reprezinta numarul maxim de caractere ce poate fi citit. Al treilea parametru, optional (implicit este \n), este un caracter ce determină încheierea citirii, dacă nu s-a atins deja numărul maxim de caractere. In cazul in care caracterul de incheiere este intalnit inainte de a fi citit numarul maxim de caractere, acest caracter nu va fi extras din stream.

Asemănătoare metodei get, având aceeași sintaxă, este metoda getline. Spre deosebire de precedenta, funcția getline extrage din flux și ultimul caracter. O altă deosebire este, în consecință. că getline nu acceptă forma fără parametri.

Vom exemplifica cele două metode prezentate, în următoarea secvență:

char a[20], b[20]; cin.get(a, 20); cin.getline(b, 20); cout<<a<<'\t'<<b; Executând secvența vom observa că, practic, după citirea șirului a, aceasta se oprește, trecând peste citirea șirului b. În fapt, al doilea șir va conține caracterul ‘\n’, sau, caracterul de terminare. Pentru a evita astfel de situații, în care dorim executarea mai multor operații de citire, fie folosim după fiecare utilizare a metodei get o sintaxă fără parametri, fie vom folosi metoda getline.

Metoda ignore se utilizează pentru a trece peste un număr de caractere până la întâlnirea unui anume caracter. Sintaxa sa este: cin.ignore(lungime, caracter). Primul parametru reprezintă numărul maxim de caractere ce vor fi ignorate. Cel de-al doilea reprezintă caracterul ce trebuie identificat. În următorul exemplu, metoda este folosită înainte de metoda getline, pentru a omite citirea, determinată de aceasta a caracterelor dinainte de spațiu.

char a[20]; cin.ignore(5, ' '); cin.getline(a, 20); cout<<a;