Operatii de Intrare si Iesire in C si C++

Curs
10/10 (5 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 6 în total
Cuvinte : 2482
Mărime: 20.24KB (arhivat)
Cost: Gratis

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;

Preview document

Operatii de Intrare si Iesire in C si C++ - Pagina 1
Operatii de Intrare si Iesire in C si C++ - Pagina 2
Operatii de Intrare si Iesire in C si C++ - Pagina 3
Operatii de Intrare si Iesire in C si C++ - Pagina 4
Operatii de Intrare si Iesire in C si C++ - Pagina 5
Operatii de Intrare si Iesire in C si C++ - Pagina 6

Conținut arhivă zip

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

Alții au mai descărcat și

Proiect la Arhitectura Sistemelor de Calcul

1. Tema proiectlui Să se proiecteze unitatea de comandă pentru un microprocesor capabil să execute următorul set de instrucţiuni: - FETCH...

Fituica C++

(1) Limbaj de programare: O unealta cu care se dau comenzi calculatorului. El ne asigura un set de concepte necesare rezolvarii problemei. C++ este...

Prelucrarea Imaginilor Digitale 1

Esantionarea si cuantificare sunt realizate de dispozitivele de achizitie a imaginilor. Acestea pot consta intr-un singur senzor care se misca...

Curs ASDN

1.1. Sisteme de numeratie - Sistemele numerice prelucrează informatie - Informatia este codificată ® un anumit tip de reprezentare - Sistemul...

Multiprocesoare

INTRODUCERE “Necesarul de simulări al Departamentului pentru Energie (DOE) al Statelor Unite depăşeşte cu mult capacitatea celor mai puternice...

Bazele Informaticii

Cu totii stim ca necesitatea reprezinta mama inventicii. Acest lucru este valabil si in lumea computerelor. U.S Army a fost prima care a solicitat...

Circuite Numerice Integrate - Decodificator

Dupa ce veti termina acest laborator veti fi capabili sa: • Proiectati un decodificator binar folosind porti logice • Creati un proiect pentru un...

Procesarea semnalelor digitale în timp real

Introducere în procesarea semnalelor digitale în timp real Semnalele pot fi clasificate în trei categorii: - semnalele continue în timp...

Ai nevoie de altceva?