Fisiere in C++

Fişiere in C++

Un fişier este o colecţie de date indicat printr-un nume şi o extensie. Numele este desparţit de extensie prin punct.

Avantajul lucrului cu fisiere este evident, datele rezultate în urma execuţiei unui program putând fi salvate.

În esenţă, există doua tipuri de fisiere: fisiere text si fisiere binare. Un fişier text conţine text (cifre si caractere) iar un fisier binar poate conţine si imagini, baze de date, etc.

Vom studia lucru cu fisere text.

Pentru lucrul cu fişiere text in C++ se adaugă o bibliotecă standard si anume <fstream.h>. Această bibliotecă lucrează cu fluxuri (stream-uri) :

ifstream – flux de intrare

ofstream – flux de iesire

fstream – are ambele caracteristici (ifstream si ofstream)

Opreaţiile care se efectuează, în general, cu fisiere text sunt:

-         deschidrea unui fisier text

-         închiderea unui fisier text

-         citirea datelor dintr-un fisier text

-         scrierea datelor intr-un fisier text

-         adăugarea datelor într-un fişier text

Pentru o mai bună înţelegere ne propunem să exemplificăm rezolvarea următoarei situaţii: Fie fişierul text fis.in în care sunt scrise numere pe mai multe rânduri. Se cere:

-         citirea datelor din fişierul text într-un vector si afişarea lor

-         scrirea datelor citite in fisierul text fis.out;

-         adăugarea datelor citite anterior in acelaşi fişier fis.out Pentru aceasta vom parcurge următoarele etape:


I.          DESCHIDEREA UNUI FISIER TEXT

Pentru a putea efectua operaţii cu un fişier text acesta trebuie mai intâi deschis. Astfel se pot folosi unul din obiectele ifstream(pentru citire) sau ofstrem(pentru scriere) din/în fisier.

ifstream f("fis.in"); //s-a deschis fisierul pentru citire SAU

fstream f("fis.in",ios::in);

ofstream f("fis.in"); //s-a deschis fisierul pentru scriere SAU

fstream f("fis.in",ios::out);

fstream f("fis.in",ios::app); // s-a deschis fisierul pentru adăugare

II.                 ÎNCHIDEREA UNUI FISIER TEXT Se realizează cu ajutolul funcţiei: f.close();

III.              CITIREA DATELOR DINTR-UN FISIER TEXT

Vom folosi astfel următoarea secvenţă de program:

#include<iostream.h>

#include<fstream.h>

#include<conio.h>

void main() {

clrscr();

int v[100],i=0,j=0,n;

fstream f("fis.in", ios::in); //s-a deschis fisierul pentru citire

//o altă varianta ar fi fost: ifstream f("fis.in");

while(!f.eof())        // cât timp nu s-a ajuns la sfârşitul fisierului text {

i++;

f>>v[i]; //se citeste din fisier caracter cu caracter j++; } for(i=1;i<j;i++)


cout<<v[i]<<" "; // se afişează fiecare element din vector f.close(); // se închide fisierul }

Obs: Citirea datelor s-a făcut într-un vector, dintr-un fisier text in care se aflau numere scrire pe mai multe rânduri.

IV.       SCRIEREA DATELOR INTR-UN FISIER TEXT

Fisierul în care dorim să scriem textul va fi suprascrie la fiecare execuţie a

programului. Secvenţa de program este următoarea:

#include<iostream.h>

#include<fstream.h>

#include<conio.h>

void main() {

clrscr();

int v[100],i=0,j=0,n;

fstream f("fis.in", ios::out); //s-a deschis fisierul pentru scriere

//o altă varianta ar fi fost: ofstream g("fis.out");

for(i=1;i<j;i++)

g<<v[i]; // se scrie din vector in fişier g.close(); }

V.        ADĂUGAREA DATELOR ÎNTR-UN FIŞIER TEXT
Secvenţa de program este următoarea:

#include<iostream.h>

#include<fstream.h>

#include<conio.h>

void main()


{

clrscr();

int v[100],i=0,j=0,n;

fstream h("fis.out",ios::app); //s-a deschis fisierul pentru adaugare for(i=1;i<j;i++)

h<<v[i]; // se scrie(adauga) din vector in fişier

h.close(); // se închide fisierul

}

Comments