Sunteți pe pagina 1din 4

FIŞIERE TEXT

Componentele unui fişier text sunt caractere structurate pe linii.


Fiecare linie (fără ultima) se termină prin marcajul de sfârşit de linie ’\n’ (newline), iar fisierul
prin caracterul EOF (acesta are valoarea -1).
Marcajul de sfârşit de linie se generează la apăsarea tastei ENTER, iar marcajul EOF la apăsarea
tastelor CTRL+Z.
Paşii necesari utilizării fişierelor text:
1) Se deschide fişierul
2) Se citesc sau se scriu date în fişier
3) Se închide fişierul.

1. Deschiderea fişierului

Deschiderea unui fişier înseamnă stabilirea unui nume logic pentru fişier şi precizarea modului de
utilizare a fişierului: intrare (citire), ieşire (scriere) sau intrare/ieşire (citire/scriere). Deschiderea unui
fişier C++ se realizează legându-l de un flux de date (stream). Un stream este o entitate logică ce
produce sau primeşte informaţie. Pentru fişiere există trei tipuri de stream-uri: de intrare (din clasa
ifstream), de ieşire (din clasa ofstream) şi de intrare/ieşire (din clasa fstream). Pentru a putea utiliza
fluxurile de date pentru fişiere trebuie inclus fişierul header fstream astfel: #include<fstream>
Declararea fluxurilor de date pentru fişiere text se realizează astfel:
A) Pentru citire:
ifstream id_nume_logic_fisier(nume_fizic_fisier);
sau
fstream id_nume_logic_fisier( nume_fizic_fisier, ios::in); unde:

o id_nume_logic_fisier - identificatorul (numele logic) al fisierului. Se utilizeaza in program pentru a


face referire la fisier;
o nume_fizic_fisier – este un sir de caractere ce reprezinta numele fizic al fisierului (inclusive calea) o
ios::in – este o constructie care specifica modul de deschidere; utilizand constanta in fisierul este
deschis pentru intrare.

B) Pentru scriere:
ofstream id_nume_logic_fisier(nume_fizic_fisier);
sau
fstream id_nume_logic_fisier(nume_fizic_fisier, ios::out);
unde:
o id_nume_logic_fisier, nume_fizic_fisier,ios:: au aceeasi semnificatie ca mai sus. o
out – constanta ce precizeaza ca fisierul este deschis pentru scriere.
C) fstream id_nume_logic_fisier(nume_fizic_fisier, ios::app);
unde:
o id_nume_logic_fisier, nume_fizic_fisier,ios:: au aceeasi semnificatie ca mai sus; o
app – precizeaza ca fisierul este deschis pentru adaugare.

2. Citirea/scrierea datelor

Citirea/scrierea datelor se realizeaza asemanator cu citirea/scrierea de la tastatura/monitor cu ajutorul


operatorilor >> pentru citire si << pentru scriere in fluxul de date al fisierului astfel:

A) pentru citire: id_nume_logic_fisier>>v1>>v2>>…>>vn;


B) pentru scriere: id_nume_logiv_fisier<<e1<<e2<<…<<en;
unde:

o id_nume_logic_fisier – numele logic al fisierului text


o v1,v2,…,vn – variabile in care se citesc datele din fisier
o e1,e2,…,en – expresii a caror valoare se scrie in fisier

3. Închiderea fişierului

Se utilizeaza functia close() in fluxul de date al fisierului.

Exemplu: f.close();

Aplicatia 1: Sa se citeasca doua numere a si b din fisierul text input.txt si sa se afiseze suma lor in fisierul
output.txt.

#include <iostream>
#include <fstream>

using namespace std;


int main()
{
int a,b,s;
ifstream f("input.txt");
ofstream g("output.txt");
f>>a>>b;
s=a+b;
g<<s;
f.close();
g.close();
return 0;
}
Aplicatia 2 Să se citească dintr-un fișier input.txt două numere întregi a, b și să se afișeze în fișierul
output.txt numerele pare din intervalul [a,b].
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
int a,b,i;
ifstream f("input.txt");
ofstream g("output.txt");
f>>a>>b;
for(i=a%2==0?a:a+1;i<=b;i+=2)
g<<i<<" ";
f.close();
g.close();
return 0;
}

Aplicația 3
Se considera un fisier input.txt ce contine numere intregi. Sa se afiseze numarul de elemente din fișier.

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

int main()
{
int k=0,n;
ifstream f("input.txt");
ofstream g("output.txt");
while(f>>n)
k++;
g<<k;
f.close();
g.close();
return 0;
}
VARIANTA 11 2020 – III.3
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
unsigned int x,y,k;
ifstream f("bac.txt");
f>>x;
k=1;//k numara de cate ori apare numarul
while(f>>y)
{
if(x!=y)
{
cout<<x<<" "<<k<<" ";
k=1;
}
else k++;
x=y;
}
cout<<x<<" "<<k<<" ";
f.close();
return 0;
}

S-ar putea să vă placă și