Sunteți pe pagina 1din 5
Operații de intrare/ieșire în C++ Mihai Gabroveanu
Operații de
intrare/ieșire în C++
Mihai Gabroveanu
Operații de intrare/ieșire în C++ Mihai Gabroveanu

Operații I/O în limbajul C++

 

n

Limbajul C++ moștenește de la C funcțiile de I/O

¨ Dezavantaj: permit manipularea doar a tipurilor de bază

n

Limbajul C++ introduce o ierarhie de clase pentru a realiza operațiile de intrare/ieșire (I/O)

n

Această ierarhie are la bază conceptul de stream (flux)

Operații de I/O în limbajul C++

3

de stream (flux) Opera ț ii de I/O în limbajul C++ 3 Opera ț ii I/O
de stream (flux) Opera ț ii de I/O în limbajul C++ 3 Opera ț ii I/O

Operații I/O în limbajul C

 

Ce este un stream?

 

n

Biblioteca standard stdio.h și conio.h

n

Stream-ul este un concept abstract care înglobează orice flux de date de la o sursă (canal de intrare) la o destinatie (canal de ieșiere)

n

Fișiere text

¨ printf/fprintf

n

Biblioteca standard ce înglobează ierarhia de clase pentru opretații de I/O

#include <iostream.h> // compilatoare vechi sau #include <iostream> using namespace std;

¨ scantf/fscanf

n

Fișiere binare

¨ fread

¨ fwrite

Operații de I/O în limbajul C++

2

Operații de I/O în limbajul C++

4

Ierarhia de clase I/O   Formatarea ie ș irii n Func ț ii pentru formatarea
Ierarhia de clase I/O   Formatarea ie ș irii n Func ț ii pentru formatarea

Ierarhia de clase I/O

 

Formatarea ieșirii

n Func ț ii pentru formatarea ie ș irii

n Funcții pentru formatarea ieșirii

long setf(long indicator);//activarea indicatorilor de format long unsetf(long indicator); int width(int w); int precision(int p); char fill(char ch);

 

Operații de I/O în limbajul C++

5

Operații de I/O în limbajul C++

7

C++ 5 Opera ț ii de I/O în limbajul C++ 7 Stream-uri standard   Exemplu n
C++ 5 Opera ț ii de I/O în limbajul C++ 7 Stream-uri standard   Exemplu n

Stream-uri standard

 

Exemplu

n

Stream-uri standard

#include <iostream> using namespace std;

¨ cin – obiect de tip istream (stream-ul standard de intrare)

void main(){ cout << 128 << endl ;// afişarea se face pe dimensiune implicita cout.unsetf(ios::dec);//dezactivez afisarea in zecimal cout.setf(ios::hex);// activez afisare in hexazecimal cout.setf (ios::showbase);//se afiseaza baza cout << 255 << endl ; cout.setf(ios::scientific); cout << 123.456;

 

¨ cout – obiect de tip ostream (stream-ul standard de ieşire)

¨ cerr – obiect de tip ostream (stream-ul standard de eroare)

n

Operatori

¨ Inserare <<

}

¨ Extragere >>

 
  128  

128

 

0xff

1.234560e+002

 

Operații de I/O în limbajul C++

6

Operații de I/O în limbajul C++

8

Exemplu Manipulatori   #include <iostream>   using namespace std; n Manipulatorii defini
Exemplu Manipulatori   #include <iostream>   using namespace std; n Manipulatorii defini

Exemplu

Manipulatori

 

#include <iostream>

 

using namespace std;

n

Manipulatorii definiţi sunt:

int main(){ cout << 123 << endl ;// afişarea se face pe dimensiune implicita cout.width(10);// se modifica câmpul la dimensiunea 10 cout << 123 << endl ; cout.width(10);// se modifica câmpul la dimensiunea 10 cout.fill('*');// se stabileşte caracter de umplere '*' cout << 123 << endl ; cout.width(10);// se modifica câmpul la dimensiunea 10 cout.precision(2);// se specifica afişarea cu precizie 2 cout.setf(ios::fixed);// fixed este activat

 

¨ - activează bitul dec (la intrare/ieşire)

dec

 

¨ - activează bitul hex (la intrare/ieşire)

hex

¨ - activează bitul oct (la intrare/ieşire)

oct

¨ - inserează caracterul ‘\n’ şi goleşte tamponul (la

endl

ieşire)

¨ - goleşte tamponul (la ieşire)

flush

 

¨ setfill(int)

- stabileşte caracterul de umplere;

cout << 123.456 << endl; return 0;

}

cout << 123.456 << endl; return 0; }

123

¨ setprecision(int)

- stabileşte precizia pentru numere în

123

virgulă mobilă;

*******123

¨ setw(int) - stabileşte dimensiune câmpului pentru operaţia următoare

****123.46

Operații de I/O în limbajul C++

9

Operații de I/O în limbajul C++

11

C++ 9 Opera ț ii de I/O în limbajul C++ 1 1 Manipulatori Exemplu   n
C++ 9 Opera ț ii de I/O în limbajul C++ 1 1 Manipulatori Exemplu   n

Manipulatori

Exemplu

 

n Formatarea se mai poate realiza și cu ajutorul manipulatorilor n Un manipulator primeşte ca parametru şi întoarce ca rezultat adresa fluxului asupra

căruia trebuie să acţioneze, astfel că pot fi inseraţi în expresiile de intrare/ieșire.

   

#include <iostream> #include <iomanip> using namespace std;

int main(){ cout << 123 << endl ; cout << hex << showbase << 123 << endl ; cout << oct << showbase << 123 << endl ; cout << 1234.56 <<endl; cout << setprecision(2) << setw(10) <<setfill('*') << setiosflags(ios::fixed); cout << 1234.56 <<endl; return 0;

 

}

123

 

0x7b

   
    0173

0173

1234.56

***1234.56

Operații de I/O în limbajul C++

10

Operații de I/O în limbajul C++

12

Opera ț ii de intrare/ie ș ire cu fi ș iere   Opera ț ii
Opera ț ii de intrare/ie ș ire cu fi ș iere   Opera ț ii

Operații de intrare/ieșire cu fișiere

 

Operații de intrare/ieșire cu fișiere

 

n

Operațiile de intrare/ieșire cu fișiere se fac prin intermediul claselor

¨ ifstream

n Moduri de deschidere a fisierelor

 

¨ ios::append - adauga la sfarsitul fisierului;

¨ ios::atend - pozitioneaza pointer-ul la sfarsitul fisierului, insa informatiile pot fi scrise oriunde in cadrul fisierului;

¨ ofstream

¨ ios::truncate - este modul de deschide implicit: vechiul continut al fisierului este pierdut;

¨ fstream

¨ ios::nocreate - daca fisierul nu exista, atunci operatia esueaza;

 

¨ ios::noreplace - daca fisierul deja exista, atunci operatia esueaza.

¨ ios::binary – deschide fișierul in mod binar.

 

Operații de I/O în limbajul C++

13

 

Operații de I/O în limbajul C++

15

1 3   Opera ț ii de I/O în limbajul C++ 1 5 Opera ț ii
1 3   Opera ț ii de I/O în limbajul C++ 1 5 Opera ț ii

Operații de intrare/ieșire cu fișiere

 

Operații de intrare/ieșire cu fișiere

 

n

Constructori

n

Rezultatul operatiilor de intrare/iesire poate fi testat prin intermediul a patru functii membre:

¨ eof() verifica daca s-a ajuns la sfarsitul fisierului;

ofstream::ofstream(const char* name,ios::openmode = ios::out | ios::trunc); ifstream::ifstream(const char* name, ios::openmode = ios::in); fstream::fstream(const char* name, ios::openmode = ios::in | ios::out);

 

¨ bad() verifica daca s-a executat o operatie invalida;

 

¨ fail() verifica daca ultima operatie a esuat;

¨ good() verifica daca toate cele trei rezultate precedente sunt false.

n

Închiderea unui fișier se face apelând funcția

¨

close()

 

Operații de I/O în limbajul C++

14

 

Operații de I/O în limbajul C++

16

Exemplu   Exemplu #include <conio.h>     ifstream in("output.txt"); if (!in){
Exemplu   Exemplu #include <conio.h>     ifstream in("output.txt"); if (!in){

Exemplu

 

Exemplu

#include <conio.h>

   

ifstream in("output.txt");

if (!in){ cerr<<"Eroare deschidere";

exit(0);

 

#include <conio.h>

 

ifstream in("output.bin",ios::binary); if (!in){ cerr<<"Eroare deschidere fisier";

 

#include <iostream> #include <fstream>

#include <iostream>

#include <fstream>

using namespace std;

}

   

exit(0);

while(!in.eof()){

using namespace std;

   

}

int main(){ int n=10, t; ofstream out("output.txt"); for(int i=0;i<n;i++) out<<i*i<<endl; out.close();

in>>t;

 

while(!in.eof()){

 
 

int main(){ int n=10, t; ofstream out("output.bin", ios::binary); for(int i=0;i<n;i++)

out.write(reinterpret_cast<char*>(&i),

in.read(reinterpret_cast<char*>(&t),

 

if (in.good()){ cout<<t<<endl;

}

 

sizeof(t));

 

if (in.good()){

cout<<t<<endl;

}

in.close();

getch();

}

}

in.close();

 

}

 

sizeof(i));

}

getch();

out.close();

 
 

Operații de I/O în limbajul C++

 

17

Operații de I/O în limbajul C++

 

19

1 7 Opera ț ii de I/O în limbajul C++   1 9 Opera ț ii
1 7 Opera ț ii de I/O în limbajul C++   1 9 Opera ț ii

Operații de citire/scriere în mod binar

 

Poziționarea într-un fișier

 

n

Scrierea într-un fișier binar se face cu funcția

n

Obținerea poziției într-un fișier se face cu:

¨ pos_type ostream::tellp();

 

ostream& write ( const char* s , streamsize n );

 

¨ pos_type istream::tellg();

n

Citirea dintr-un fișier binar se face cu funcția

n

Poziționarea într-un fișier se face cu:

 

¨

ostream& ostream::seekp(off_type offset,ios::seekdir pos);

 

istream& read ( const char* s , streamsize n );

 

istream& istream::seekg(off_type offset,ios::seekdir pos); unde pos poate avea una din urmatoarele valori

¨

 

¨ ios::beg – specifică poziţia de la începutul stream-ului;

¨ ios::end – specifică poziţia de la sfârşitul stream-ului;

¨ ios::beg – specifică poziţia curentă a stream-ului;

 

Operații de I/O în limbajul C++

 

18

 

Operații de I/O în limbajul C++

 

20