Jump to content

[C++] Lucrul cu fisiere text


AIM Katzuno Valoare
 Share

Recommended Posts

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, iar spre deosebire de citirea de la tastatura, nu trebuie sa tastezi datele de intrare la fiecare executie .
 

Lucrul cu fisiere text.

Pentru a lucra cu fisiere, C++ foloseste biblioteca <fstream> care include toate functiile din <iostream> + functii de lucru cu fisiere, in teorie, dar in unele compilatoare este nevoie de ambele biblioteci.

Pentru a putea lucra cu un fisier, trebuie efectuata o legatura intre fisierul logic sau variabila de tip fisier si fisierul fizic existent pe Hard-Disk. Legatura poarta numele de deschidere a fisierului. Ex: ifstream f("numere.in");

Deschiderea se poate face pentru citire sau pentru scriere. Deschiderea pentru citire se face cu ifstream, iar, deschiderea pentrus criere se face cu ofstream.

Bineinteles, cand nu mai avem nevoie de datele din fisier, acesta trebuie inchis pentru a nu ocupa spatiu de memorie dupa executia programului, in unele compilatoare este posibil sa primiti eroare datorita neinchiderii fisierelor. Pentru a inchide un fisier folosim functia close().

Utilizare *.close():

Se utilizeaza sub forma: VariabilaDeTipFisier.close()

*/

Exemplu:

//Se da un fisier cu numereintregi. Sa se afiseze pe ecran continutul fisierului.

 

#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
char a;
ifstream f("numere.txt");
ofstream g("numere.out");
while (f>>a)//Citirea din fisier(f>>a), cat timp se mai poate citii din fisier, se afiseaza valoarea citita.
        g<<a<<"  ";//Scrierea in fisier
f.close();
g.close();
 
return 0;
}

Alte functii din biblioteca <fstream>:

- Functia fstream - are ambele caracteristici, ifstream si ofstream, dar depinzand de anumiti factori.

Utilizare fstream:

fstream VariabilaTipFisier("numere.txt", ios::in) - ios::in da proprietatea fisierului de a se deschide DOAR pentru citire.

Ex:

fstream f("numere.txt", ios::in)

Alte stream-uri pentru lucrul cu fisiere text(se scriu in loc de ::in, dupa ios):

-out - Fisierul se deschide pentru scriere

-ate - Fisierul se deschide pentru adaugare la sfarsit, daca nu exista, se creeaza

-app -Fisierul se deschide pentru adaugare la sfarsit, trebuie sa existe.

-noreplace - Fisierul este deschis, iar continutul nu poate fii inlocuit

Exemplu de utilizare:

fstream f("numere.txt", ios::ate)

 

Probleme aplicative:

1) Se dau 2 fisiere .txt. Sa se verifice daca au acelasicontinut.

2) Se dau 2 fisiere .txt. Sa se concateneze (lipeasca) cele doua.

3) Intr-un fisier sunt 10.000.000 de numere natural <=100, sa se afiseze ce valoare mai mica sau egala decat 100 lipseste. (Citesc generare aleatoare de numere cu random)

4) Se dau intr-un fisier coordonatele capetelor unui segment si apoi pe urmatoarea linie n, iar pe urmatoarele n linii n perechi de nr intregi. Sa se verifice care din punctele respective apartin dreptei determinate de capetele segmentului.

Edited by Cdorsu
Link to comment
Share on other sites

O alternativa mai jmechera este freopen din stdio.h

 

Daca scrii undeva

 

freopen("text.in","r", stdin);

 

Orice cin>> care e folosit dupa ce s-a trecut peste linia de mai sus va citi din fisier :)

 

Pentru scriere ar fi

 

freopen("text.out","w",stdout);

Acum cout va scrie direct in fisierul respectiv.

 

"r" vine de la read

"w" vine de la write

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.