Sunteți pe pagina 1din 3

PROGRAMAREA ORIENTAT PE OBIECTE - Laborator

Lucrarea de laborator 2.
SISTEMUL DE INTRARI/IESIRI DE BAZA DIN C++
Utilizare manipulatori
Utilizarea manipulatorilor pentru formatarea ieirilor
Manipulatorii sunt o serie funcii speciale declarate n biblioteca IOMANIP.H.
Acetia sunt :
- dec, oct, hex pentru a specifica baza de numeraie a intrrilor i ieirilor; (I/O)
- setbase(int baza) stabilete baza valorilor numerice ce intr sau ies din stream; (O)
- endl pentru un caracter de linie nou care se terge (echivalentul unui Enter din tastatur);
(O)
- ends scrie n stream un caracter null (0x00 sau `\0`);(O)
- ws pentru streamuri de intrare emite spaiile libere introduse nainte de valoarea efectiv;
(I)
- flush golete un stream; (O)
- resetiosflags(long f) dezactiveaz indicatorii specificai n f; (I/O)
- setiosflags(long f) activeaz indicatorii specificai f; (I/O)
- setprecision(int precizie) stabilete numrul de zecimale al valorilor cu virgul ; (O)
- setfill(int ch) stabilete caracterul de umplere; (O)
- setw(int w) stabilete lrgimea cmpului n care se va afia o valoare sau ir de caractere;
(O)
Pentru a folosi un manipulator vom folosi expresia:
cout<<manip1<<v1<<<<manip2<<manip3<<vk;
cin>>manip1>>v1>>manip2>>;
Exemplu n cazul stabilirii cmpului de afiare de 10 avnd caracterul de umplere *
putem scrie:
cout.width(10) ;
cout. fill( *) ;
cout<<Exemplu<<endl;
sau
cout<<setw(10)<<setfill(*)<<Exemplu<<endl;
cu condiia includerii bibliotecii iomanip.h.
Exerciiul 1.
S se afieze pe cte un rnd,n cmpuri de 20 de caractere, alineate la dreapta, valoarea lui
radical din 2, mai nti cu o zecimal i apoi crescnd cu unu numrul de zecimale. Vor fi afiate astfel
zece rnduri. Se va da prioritate folosirii manipulatorilor mai sus prezentai.

PROGRAMAREA ORIENTAT PE OBIECTE - Laborator

Rezultatul programului va fi cel din figura de mai jos.

Definirea propriilor manipulatori


Se pot crea manipulatori proprii care sa acioneze asupra unor streamuri.
Pentru a crea un manipulator se poate utiliza aceast structur general valabil:
Pentru manipulatori folosii mpreun cu cout:
ostream& nume_manipulator_out (ostream& cout)
{
// se fac operatii cu streamul
cout<<<<;
cout.setf() ;
cout.precision() ;
cout<<endl<<ends;
// aceste operatii sunt date ca exemplu putandu-se alege oricare
// combinatie ce este utila
return cout ; //aceasta comanda este absolut necesara
// este ultima comanda din corpul functiei de definire
}
Pentru manipulatori folosii mpreun cu cin:
istream& nume_manipulator_in (istream& cin)
{
// se fac operatii cu streamul
cin>>>>;
cin.setf() ;
cin.precision() ;
cin>>ws;
// aceste operatii sunt date ca exemplu putandu-se alege oricare
// combinatie ce este utila
return cin ;

//aceasta comanda este absolut necesara


// este ultima comanda din corpul functiei de definire

}
Pentru a folosi aceti manipulatori se va folosi secvena:
cout<<<<nume_manipulator_out<<;
cin<<<<nume_manipulator_in<<;

PROGRAMAREA ORIENTAT PE OBIECTE - Laborator

Exerciiu 2
Creai un manipulator de ieire cu numele rnd_nou, care ataat unui stream cout sa fac acelai
lucru ca manipulatorul endl. Sau un manipulator numit da_un_bip care ataat lui cout s scoat un
sunet scurt de avertizare. (Se va folosi caracterul special \a).
Exerciiu 3
Creai un manipulator de intrare cu numele cere_parola, care ataat unui stream cin s cear
introducerea unui ir de caractere ce semnific parola. Dac parola este greit se va emite un sunet de
avertizare folosindu-se manipulatorul da_un_bip creat mai nainte i se va repeta secvena de solicitare
a parolei. Altfel se va confirma c parola este corect i se va ncheia programul. (Pentru compararea
irului introdus cu parola dorit se va folosi funcia strcmp(sir1,sir2) din biblioteca string.h).

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