Fisiere text in C++

1. Despre fisiere text

Pana acum am lucrat numai cu date citite de la tastatura. Pentru variabile utilizate intr-un program, se aloca memorie in RAM. Memoria alocata se elibereaza fie pe parcursul executiei programului, fie la terminarea executiei acestuia. Oricum, dupa aceasta actiune, valorile memorate se pierd, deoarece zona de memorie in care au fost memorate s-a eliberat. Daca doream sa executam inca o data programul cu aceleasi date de intrare, trebuia sa introducem din nou acele date (sa introducem din nou valori de la tastatura). Iata cu ce ne ajuta aceste fisiere text.

Desigur, acest aspect devine inconvenabil. De exemplu, in cazul unui tablou unidimensional (vector) care vrem sa memoreze 1.000 valori. Ar fi trebuit sa citim chiar 1.000 valori de la tastatura. Sau, de exemplu, imaginati-va o companie de cel putin 5.000 de angajati. Dupa rularea programului ar fi o pierdere de timp introducerea datelor a celor 5.000 angajati, de la tastatura.

2. Declararea fisierelor

Daca pana acum foloseam cin si cout pentru a citi de la tastatura niste valori, respectiv de a le afisa pe ecran, acum ne vom folosi de alte stream-uri.

Pentru inceput, ca variabilele folosite pentru crearea unui program, este necesara deschiderea bibliotecii fstream (functii precum ifstream, ofstream si fstream).

  • ifstream – declarare stream de intrare
  • ofstream – declarare stream de iesire
  • fstream – declarare stream de intrare/iesire in functie de modul specificat la deschidere (dar nu ne vom folosi de acest stream, momentan).

Aceste stream-uri se „declara” in antet, de regula dupa using namespace std;. Inainte de a scrie cod, trebuie sa cream un fisier cu extensia .txt, in directorul principal. Pe parcurs vom face fisiere cu extensia .in (fisier din care se citesc valori) si .out (fisier in care vom duce anumite valori/vom salva valorile dorite).

Dupa crearea fisierului, sa ne imaginam ca vrem sa citim din fisierul respectiv primele 3 valori (presupunem ca in acel fisier exista deja cel putin 3 valori) si le vom afisa pe rand, pe ecran.

fin reprezinta stream-ul declarat de noi prin intermediul caruia vom citi valorile aflate in fisierul fisier.txt (in cazul nostru). Asa cum am specificat, in loc de fin se poate pune orice valoare si in loc de fisier.txt se poate pune orice fisier deja existent in directorul principal (examen.txt, bac.txt, etc..).

Pentru exemplul prezentat anterior:

Daca in fisierul fisier.txt se afla urmatoarele valori:

pe ecran se va afisa:

Pentru ca noi am luat 3 variabile x, y, z si am citit din fisier doar primele 3 valori pe care le-am atribuit variabilelor declarate.

3. Scrierea datelor intr-un fisier

Daca pana acum am citit valori din fisierele text si le-am afisat pe ecran cu cout, acum vom citi niste valori si de la tastatura si din fisierul text. Vom face cateva operatii si le vom salva in alt fisier.

Lucrurile la ofstream sunt asemanatoare cu cele de ifstream. Trebuie sa declaram o variabila de care ne vom folosi pentru scrierea valorilor intr-un anumit fisier pe care-l vom numi tot noi. Aceasta variabila ii va tine loc lui cout, numai ca de data asta valorile nu vor mai fi afisate pe ecran, ci va fi scrise in fisierul dorit.

Avem urmatorul program:

Daca inca nu ti-ai dat seama ce face acest program: ne-am folosit de programul scris in primul tutorial din fisiere text in care citeam din fisier primele 3 valori si le afisam pe ecran. Ei bine, de aceasta data, pentru a complica putin lucrurile, am citit aceleasi 3 valori din fisierul fisierul1.txt. Am facut media aritmetica a celor 3 numere, dupa care am trimis aceasta medie in fisierul fisier_out.txt

fisier_out.txt nu este neaparat sa fie creat de noi, pentru ca se creaza automat cu valoarea scrisa, in cazul in care acesta nu exista. In schimb, fisierul1.txt trebuie sa fie creat de noi si trebuie scrise in acesta valorile dorite.

Pentru exemplul dat mai sus:

Daca fisierul fisier1.txt contine urmatoarele valori:

Dupa compilarea programului, in fisierul fisier_out.txt va aparea:

Lucrurile cu aceste fisiere text sunt extrem de simple. Singura diferenta intre un program „simplu” si cel cu fisiere text, este doar declararea fisierelor de intrare/iesire (daca este cazul).

Pentru nelamuriri, asteptam comentarii.

Vlad

Fac doar lucruri care-mi plac, care-mi aduc motivatie si fericire, nu material.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *