Documente Academic
Documente Profesional
Documente Cultură
Un fișier este o colecție da date de același tip, memorate pe suport extern (hard-disc, dischetă,
CD etc). Fișierul text conține o secvență de caractere ASCII structurate pe linii.
Exemple
ifstream f1; //am declarat un stream de intrare denumit f1
ofstream f2; //am declarat un stream de ieşire denumit f2
fstream f3; //am declarat un stream denumit f3.
Observaţii!
Declaraţiile precedente respectă sintaxa declaraţiilor de variabile (ifstream/
ofstream/fstream reprezintă tipul, iar f1, f2, f3 reprezintă numele variabilelor).
Deschiderea fişierelor
Pentru a utiliza stream-ul declarat trebuie să îl deschidem. La deschidere, se asociază
stream-ului un fişier fizic (existent pe suport extern) şi, eventual, se precizează modul de deschidere,
care determină operaţiile permise cu fişierul respectiv. Deschiderea se poate realiza în două moduri:
- după declarare, prin apelul funcţiei membră open, precizând ca parametri un şir de caractere,
care reprezintă specificatorul fişierului fizic, conform sintaxei sistemului de operare utilizat, şi
(eventual) modul de deschidere;
- la declarare, specificând după numele stream-ului care se declară numai parametrii
corespunzători funcţiei open, încadraţi între paranteze rotunde.
La deschidere, este obligatoriu să specificăm modul de deschidere dacă fişierul este
declarat de tip fstream. Pentru tipul ifstream se utilizează implicit modul ios : : in, iar pentru tipul
ofstream se utilizează implicit modul ios : : out.
Exemplul 1
ifstream f1;
f1.open("date.in");
Am declarat un stream de intrare denumit f1, apoi l-am deschis cu ajutorul funcţiei open,
asociindu-1 fişierului date.in. Deoarece nu am precizat discul logic pe care se află acest fişier sau
calea către directorul în care se află fişierul, se deduce că fişierul se află pe hard-disc în directorul
curent. Acelaşi efect l-am fi obţinut prin deschiderea fişierului la declarare, astfel:
ifstream f1("date.in");
Exemplul 2
ofstream f2;
f2.open("c:\\ema\\exemple\\date.out") ;
Am declarat un stream de ieşire, denumit f2, pe care l-am asociat fişierului fizic
date.out, care se află pe discul c:, în directorul exemple, care este un subdirector al directorului ema.
În acest exemplu nu am specificat nici un mod de deschidere. In acest caz se utilizează modul de
deschidere implicit (se creează un fişier vid cu numele specificat, în care se vor realiza doar operaţii
de scriere).
Exemplul 3
fstream f3;
f3.open("nr.in", i o s : : i n ) ;
Am declarat un stream denumit f 3, pe care la deschidere l-am asociat fişierului nr.in. Deoarece
tipul fstream nu are asociat un mod de deschidere implicit, a fost necesar să precizăm modul de
deschidere. În acest caz, modul de deschidere este ios: :in, ceea ce înseamnă că fişierul a fost
deschis ca fişier de intrare (numai pentru operaţii de citire).
Exemplul 4
fstream f4;
f4.open("nr.out", i o s : : o u t ) ;
Am declarat un stream denumit f4, pe care la deschidere l-am asociat fişierului nr.out. Modul
de deschidere specificat este ios::out, ceea ce semnifică deschiderea fişierului ca fişier de
ieşire (se creează un fişier vid cu numele specificat, în care se vor realiza doar operaţii de
scriere).
Exemplul 5
fstream f5;
f5.open("nr.ad", ios :: app );
Am declarat un stream denumit f5, pe care la deschidere l-am asociat fişierului nr.ad. Modul de
deschidere specificat este ios::app, ceea ce înseamnă că deschidem fişierul ca fişier de ieşire,
pentru adăugare de informaţii la sfârşit.
Inchiderea fişierelor
Dupa realizarea tuturor operatiilor cu un fisier, acesta trebuie inchis. Inchiderea unui fisier se
realizeaza prin apelarea functiei membre close().
fin.close(); fout.close();
Operatia de inchidere este obligatorie, in special pentru fisierele de iesire. In cazul in care nu
inchideti fisierul de iesire, exista mari sanse sa pierdeti informatii!
.................
f1>>n;}
SAU
int n;
ifstream f1("date.in") ;
while(f1>>n){……………………}
APLICATII REZOLVATE!
Din fisierul date.in (creat in directorul curent-direct din mediul de programare File→New), se citesc
variabilele reale a,b si c, separate prin cate un spatiu. In fisierul date.out se vor afisa valorile citite,
pe prima linie, cu cate un spatiu intre ele, iar pe urmatoarele linii, suma si produsul lor. Exemplu:
date.in date.out
3 4 5 3 4 5
12
60
REZOLVARE IN C++:
#include <iostream>
#include <fstream>
int main()
{ ifstream f("date.in");
ofstream g("date.out");
float a,b,c,s,p;
f>>a>>b>>c; s=a+b+c; p=a*b*c;
g<<a<<" "<<b<<" "<<c<<" "<<endl; g<<s<<endl; g<<p<<endl;
f.close(); g.close();
return 0;}