Sunteți pe pagina 1din 3

Citiri și scrieri în C++

Stream-ul de ieșire cout


În cele mai multe cazuri, dispozitivul standard de ieșire este ecranul și poate fi accesat cu
stream-ul cout. Pentru aceasta, cout se folosește împreună cu operatorul de
inserție <<, urmat de data care se va afișa:

cout << "Salut"; // afiseaza pe ecran Salut


cout << 17; // afiseaza numarul 17 pe ecran
cout << n; // afiseaza pe ecran valoarea variabilei n

Operatorul cout afișează în stream-ul din stânga valoarea din dreapta. Să observăm
că "Salut" este delimitat de ghilimele, deoarece este o constantă literal de tip șir de
caractere, iar n nu este delimitată de ghilimele, deoarece este o variabilă.

Dacă textul care urmează după << este între ghilimele, se va afișa ca
atare. Dacă nu este între ghilimele, se consideră că este o variabilă,
și se afișează valoarea ei.

cout << "Salut"; //afiseaza cuvantul Salut


cout << Salut; // afiseaza valoare variabilei Salut

Putem afișa mai multe valori în aceeași instrucțiune:

cout << "Ana " << "are" << " mere."; // se va afisa Ana are mere

sau

int nr_mere = 17;


cout << "Ana " << "are " << nr_mere << " mere."; // se va afisa Ana are 17 mere

cout nu adaugă automat sfârșit de linie sau spatii. De exemplu:

cout << "Aceasta este o";


cout << "propozitie mai lunga!";

va afișa:

Aceasta este opropozitie mai lunga!

Pentru a insera spațiu între o și propoziție, îl precizăm explicit:

cout << "Aceasta este o "; // este un spatiu dupa o


cout << "propozitie mai lunga!";

sau
cout << "Aceasta este o";
cout << " propozitie mai lunga!"; // la inceput este un spatiu

Dacă vrem să afișăm pe linii diferite procedăm astfel:

cout << "Aceasta este o\n";


cout << "propozitie mai lunga!";

O altă variantă este să folosim manipulatorul endl pentru a întrerupe linia. De exemplu:

cout << "Aceasta este o" << endl;


cout << "propozitie mai lunga!";

Ambele variante de mai sus vor afișa:

Aceasta este o
propozitie mai lunga!

endl produce un caracter rând nou, exact ca și inserarea lui \n, dar mai face
ceva: endl golește buffer stream-ului cout, adică forțează afișarea pe ecran tuturor
caracterelor inserate în stream până în acest moment. endl produce întârzieri în execuția
programului, deci trebuie folosit cu precauție.

Stream-ul de intrare cin


În cele mai multe cazuri, dispozitivul standard de intrare este tastatura și poate fi accesat
cu stream-ul cin. Pentru aceasta, cin se folosește împreună cu operatorul de
extragere >>, urmat de variabila în care se va memora valoarea extrasă (variabila care se
va citi):

int n;
cin >> n;

Mai întâi se declară variabila n, apoi se citește o valoare pentru ea – se extrage din cin o
valoare care se memorează în variabila n. La execuție, programul așteaptă să se introducă
o valoare de la tastatură. De fapt, caracterele introduse sunt transmise programului numai
când se apasă tasta ENTER.
Să considerăm următorul program:

#include <iostream>
using namespace std;
int main()
{
int n = 7;
cout << "n = ";
cin >> n;
cout << "n este " << n << endl;
cout << "patratul lui n este " << n * n << endl;
return 0;
}

Rezultatul său depinde de valoare introdusă pentru n. Ar putea fi:

n = 25
n este 25
patratul lui n este 625

Dar dacă se nu se introduce un număr?

n = salut
n este 0
patratul lui n este 0

La operația de extragere din cin contează tipul variabilei de după >>. Caracterele din
stream sunt interpretate în funcție de tipul variabilei. Dacă aceste caractere nu corespund
cu tipul variabilei, operația de extragere eșuează. Dacă operația de extragere din stream
eșuează:

 variabila nu se modifică și se setează un marcaj de eroare (failbit) – până la


C++11;
 variabila primește valoarea 0 și se setează failbit. Dacă valoarea extrasă
depășeste limitele tipului variabilei, aceasta primește valoarea maximă sau
minimă a tipului său și se setează failbit – de la C++11.

Se pot citi valorile a două sau mai multe variabile în aceeași instrucțiune:

cin >> x >> y;

este echivalent cu

cin >> x;
cin >> y;

În ambele cazuri se așteaptă introducerea a două valori; acestea pot fi separate/precedate


prin orice fel de caractere albe: spații, TAB-uri, caractere rând nou.

S-ar putea să vă placă și