Operatii de Intrare si Iesire in C si C++

Imagine preview
(10/10 din 5 voturi)

Acest curs prezinta Operatii de Intrare si Iesire in C si C++.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 6 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domenii: Calculatoare, Automatica, Inteligenta Artificiala, Limbaje de Programare

Extras din document

Operatii de intrare / iesire în C++ .

Ca si în C, în C++ facilitatile de intrare / iesire sunt implementate prin intermediul unei biblioteci de functii.

Pe nivelul cel mai de jos, un fisier este interpretat ca un flux de octeti (stream).

Pe nivelul utilizator, fisierul consta dintr-o secventa de tipuri amestecate de date: caractere, valori aritmetice, obiecte.

Biblioteca de functii de intrare / iesire realizeaza interfata între cele doua niveluri.

În biblioteca este predefinit un set de operatii pentru citirea si scrierea unor tipuri predefinite.

Aceste operatii pot fi extinse de catre programator pentru tipurile de date definite de catre utilizator (clase).

Operatiile de intrare sunt suportate de clasa istream, cele de iesire – de clasa ostream.

Scrierea în fluxul de iesire (insertie) se realizeaza cu operatorul << ( << x – preia date din x).

Citirea din fluxul de intrare (extractie) se realizeaza cu operatorul >> ( >>x – pune date in x).

Sunt predefinite 4 fluxuri de date: cin – obiect din clasa istream, legat de intrarea standard, cout – obiect din clasa ostream, legat de iesirea standard, cerr – obiect din clasa ostream legat de iesirea standard de eroare nebuferata si clog – legat de iesirea standard de eroare buferata.

Intrarile / iesirile standard folosesc obiectele cin, cout si cerr, initializate prin includerea fisierului antet iostream.h.

1. Iesirea standard.

Se realizeaza folosind operatorul de inserare << (depune în flux). Acest operator este predefinit pentru tipurile: caracter, întregi, reali, siruri de caractere, pointeri. Operatorul poate fi supraîncarcat pentru tipurile utilizator (tipuri abstracte). Exemple:

#include <iostream.h>

int n=10;

cout << n << “n”; // acelasi efect are printf(“%dn”, n);

char c=’A’;

cout << c << “n”; // similar cu printf(“%cn”, c);

Pentru realizarea unor facilitati de formatare, în C++ seutilizeaza indicatori de format (flaguri), care contin într-o data membru al clasei ios bitii cu semnificatiile urmatoare:

enum {

skipws =0x0001, // salt peste spatii albe

left =0x0002, // alinierea iesirii la stinga

right =0x0004, // alinierea iesirii la dreapta

internal =0x0008,

dec =0x0010, // conversie in zecimal

oct =0x0020, // conversie in octal

hex =0x0040, // conversie in hexazecimal,

showbase =0x0080, // se afiseaza baza

showpoint =0x0100, // se afiseaza punctul zecimal

uppercase =0x0200, // se afiseaza cu litere mari

showpos =0x0400, // intregii pozitivi sunt afisati cu +

scientific=0x0800, // realii se afiseaza cu exponent

fixed =0x1000, // realii se afiseaza fara exponent

unitbuf =0x2000, // se goleste zona tampon pentru iesiri

stdio =0x4000, // dupa fiecare iesire se videaza stdout

};

În absenta indicatiilor de formatare, se face o formatare implicita, în baza 10, cu aliniere la dreapta în câmpul de iesire.

Pentru a realiza o formatare definita de utilizator, diferita de cea implicita, se pot seta bitii membrului indicator cu functiile:

long setf(long f); // seteaza indicatorii, intoarce vechiul format

long setf(long b, long g);//seteaza bitul specificat din grupa

Bitii indicatorului de format se împart în 3 grupe:

1) aliniere (adjustfield) cu bitii right, left si internal

2) baza (basefield) cu bitii dec, oct, hex

3) exponent (floatfield) cu bitii scientific si fixed.

Într-o grupa poate fi setat un singur indicator.

int width(); // returneaza latimea zonei de afisare

int width(int w); // modifica la w, latimea zonei de afisare

Implicit, latimea minima a zonei de afisare este 0; ea poate fi extinsa automat pentru a permite afisarea datei cu toate cifrele.

Daca numarul de caractere al datei este mai mic decât latimea minima a zonei de afisare, se face aliniere la dreapta, completata la stânga cu spatii libere.

Caracterul de umplere (cu care se completeaza latimea minima a zonei de afisare poate fi definit prin:

char fill(); // intoarce codul caracterului de umplere curent

char fill(char c); //defineste un nou caracter de umplere

Numarul de zecimale cu care se afiseaza un numar real (precizia) poate fi setat cu:

int precision(); //intoarce precizia curenta

int precision(int n); // modifica precizia la n cifre,

// intoarce vechea precizie

Exemple:

int i=25;

cout.width(10);

cout.setf(ios::left,ios::adjustfield);

cout.fill(‘0’);

cout.setf(ios::showpos);

cout.setf(ios::hex,ios::basefield);

cout << i << endl;

double x=123.456;

cout.setf(ios::scientific,, ios::floatfield);

cout.precision(5);

cout << x << endl;

2. Manipulatori.

Permit definirea formatelor pentru operatiile de intrare / iesire, într-un mod mai simplu decât o fac indicatorii de format.

Exista urmatorii manipulatori:

dec – indicator de conversie zecimal

oct – indicator de conversie octal

hex – indicator de conversie hexazecimal

ws – setare salt peste spatii albe

endl – insereaza linie noua si goleste tamponul fluxului

ends – insereaza caracterul nul de terminare a unui sir de caractere

flush – goleste tamponul fluxului

setbase(int n) - seteaza baza(n = 0, 8, 10, 16)

resetiosflags(long x) – sterge bitii de format specificati

setiosflags(long x) – seteaza bitii de format specificati

setfill(int n) – seteaza caracterul de umplere

setprecision(int n) – seteaza precizia

setw(int w) – setarea latimii câmpului de afisare

Pentru a folosi manipulatori se include fisierul iomanip.h

Exemple:

int i = 12345;

cout << setw(10) << resetiosflags(ios::internal|ios::left) <<

setiosflags(ios::right) << setfill(‘0’) <<

setiosflags(ios::showpos) << i;

double x = 2.718281;

cout << resetiosflags(ios::fixed) << setiosflags(ios::scientific)

<< setprecision(10) << x;

Fisiere in arhiva (1):

  • Operatii de intrare si iesire in C si C++.doc