Sunteți pe pagina 1din 4

Utilizarea membrilor clasei ios pentru formatarea ieirilor i intrrilor

Dup cum s-a spus anterior, se pot utiliza membrii clasei ios pentru a formata intrrile i ieirile. De asemenea, se pot utiliza indicatoarele de formatare (metode din clasa ios) dup cum urmeaz:
INDICA !" s(ip)s left ri,-t internal dec oct -e/ s-o)base uppercase s-o)point s-o)pos scientific fi/ed #$%NI&ICA'I$ #are peste spa*iile albe la intrare. Aliniere la st+n,a a ieirii. Aliniere la dreapta a ieirii. Adau, caracter de umplere dup orice indicator de baz sau semn. Con.ersie zecimal. Con.ersie octal. Con.ersie -e/azecimal. 0tilizarea indicatorului bazei la ieire. &or*eaz scrierea cu ma1uscule a nr. -e/azecimale. &or*eaz scrierea cu .ir,ul. Adau, un 2 la 3ntre,ii poziti.i. 0tilizeaz nota*ia tiin*ific. 0tilizeaz nota*ia 3n .ir,ul mobil.

Indicatorii de format enumera*i mai sus, care definesc un atribut de format, sunt ,rupa*i 3n trei ,rupe. Aceste ,rupe pot fi referite prin denumiri atribuite lor: adjustfield 4 format din ri,-t, left i internal5 basefield 4 format din dec, oct i -e/5 floatfield 4 format din fi/ed i scientific.

6entru a putea utiliza indicatoarele de formatare acestea sunt ataate unei metode (numite setf) a flu/ului care .a efectua ieirea. 7ter,erea indicatoarelor de format se face cu unsetf. Alte metode ale aceluiai flu/ sunt: width 4 pentru a stabili spa*ierea, fill 4 pentru a introduce un caracter de umplere, precision 4 pentru a introduce numrul de elemente dup care se face precizia 3n .ir,ul mobil. oate aceste metode se introduc ca referiri prin instan*ieri ale clasei ios (respecti. cout i cin). Ex.1: # se realizeze un pro,ram care realizeaz formatri utiliz+nd indicatorii de formatare.
#include<iostream.h> #include<conio.h> void main()

clrscr(); int n=123; //1. se afiseaza 00123 cout.width(5); cout.set (ios!!ri"ht#ios!!ad$ust ield); cout. ill(%&%); cout<<n; cout<<'(n)ctionati *entru a continua.(n'; "etch(); //2. se afiseaza +1230 cout.width(5); cout. ill(%&%); cout.set (ios!!le t#ios!!ad$ust ield); cout.set (ios!!show*os); cout<<n; cout<<'(n)ctionati *entru a continua.(n'; "etch(); //3. se afiseaza +0123 (semnul plus ramane activat cout.width(5); cout. ill(%&%); cout.set (ios!!internal#ios!!ad$ust ield); cout<<n; cout<<'(n)ctionati *entru a continua.(n'; "etch(); //!. afiseaza valoarea in "exazecimal a numarului n cout.set (ios!!he+#ios!!,ase ield); //oct ptr. afisare in octal cout<<n; cout<<'(n)ctionati *entru a continua.(n'; "etch(); dou,le d=123.-5.; //#. se afiseaza in forma stiintifica numarul $ cout.unset (ios!!show*os); //$ezactivam optiunea $e afisare cu + cout.set (ios!!scienti ic#ios!! loat ield); cout<<d; cout<<'(n)ctionati *entru a continua.(n'; "etch(); //%. se afiseaza cu o precizie $e 2 cifre cout.set (ios!! i+ed#ios!! loat ield); cout.*recision(2); cout<<d; cout<<'(n)ctionati *entru a continua.(n'; "etch();

&anipulatori
%anipulatorii permit definirea formatelor pentru opera*iile de I8!. 6ractic, toate facilit*ile de definire ale formatelor descrise mai sus, folosind func*iile membru width, setf, unsetf, fill, precision pot fi realizate cu a1utorul manipulatorilor. Acetia suntz func*ii membru speciale. ! astfel de func*ie returneaz o referin* la un stream. 9n felul acesta, apelurile manipulatorilor se pot 3nln*ui 3n inserri. %anipulatorii care pot fi utiliza*i 3n construc*ia diferitelor aplica*ii:
%!D$:A !" dec -e/ oct endl ends flussetiosfla,s(indicator) resetiosfla,s(indicator ) setbase(baza) setfill(caracter) setprecision(cifr) set)(dimensiune) )s IN "A"$8I$7I"$ I8! I8! I8! ! ! ! I8! I8! ! ! ! ! I #$%NI&ICA'I$ Con.ersie zecimal. Con.ersie -e/azecimal. Con.ersie octal. Indic flu/ului s afieze un caracter de linie nou i s se tear,. #f+rit de ir. Indic flu/ului s afieze un N0::. Indic flu/ului s se tear,. Acti.eaz indicatoarele specificate anterior. Dezacti.eaz indicatoarele specificate. #tabilete baza de numerota*ie la .aloarea baza. #tabilete un caracter de umplere. #tabilete numrul de cifre de precizie. #tabilete dimensiunea c+mpului. #are pestespa*iile albe de la 3nceput.

Observaie:

o*i manipulatorii care au linie de parametrii formali nevi$ cer un fiier de antet,

numit 012)304.5. Ex.2: # se realizeze un pro,ram care realizeaz formatri utiliz+nd manipulatorii de formatare.
/6 *ro"ram care reali7ea7a acealeasi a isari ca si *ro"ramul *recedent# utili7and mani*ulatori la de inirea ormatelor 6/ #include<iostream.h> #include<iomani*.h> #include<conio.h> void main() { clrscr(); int n=123; //1. afiseaza 00123 cout<<setw(5)<<setios la"s(ios!!ri"ht)<<set ill(%&%)<<n; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch();

//2. se afiseaza +1230 cout<<setw(5)<<setios la"s(ios!!le t)<<set ill(%&%)<< setios la"s(ios!!show*os)<<n; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch(); //3. se afiseaza +0123 (semnul plus ramane activat cout<<setw(5)<<setios la"s(ios!!internal)<<set ill(%&%)<<n; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch(); //!. se afiseaza numarul in "exazecimal cout<<he+<<n; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch(); dou,le d=123.-5.; //#. se afiseaza in forma stiintifica cout<<resetios la"s(ios!! i+ed)<< setios la"s(ios!!scienti ic)<<d; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch(); //%. se afiseaza cu o precizie $e 2 cifre cout<<set*recision(2)<<d; cout<<'(n)ctionati o tasta *entru a continua.(n'; "etch(); /