duminică, 19 ianuarie 2014

Fisiere text in C++

Fisier text = succesiune de caractere ASCII ce se incheie cu caracterul EOF.
Toate utilitarele necesare pentru accesarea fisierelor text din programe C++ se afla in biblioteca fstream
Pentru a putea accesa un fişier text dintr-un program C++ trebuie declarata o variabila, astfel :
    ifstream-declarare stream de intrare(numai pentru operatii de citire)
    ofstream-declarare stream de iesire(numai pentru operatii de scriere)
    fstream-declarare stream de intrare/iesire (in care se pot realiza atat operatii de citire, cat si operatii de scriere)
Cand ne hotarâm sa accesam fisierul, mai intai trebuie sa-l "deschidem". De fapt, creem legatura logica intre variabila declarata pentru accesarea fisierului si zona de pe disc unde se gaseste fisierul. Dupa crearea acestei legaturi, ori de cate ori dorim sa accesam fisierul vom accesa de fapt variabila asociata lui.
Exemplu:ifstream f("intrare.txt");
initializare variabila de acces, la declarare
ofstream g("iesire.txt");

Cand ne hotarâm sa nu mai accesam fisierul va trebui sa-l "inchidem". De fapt, distrugem legatura logica intre variabila declarata pentru accesarea fisierului si zona de pe disc unde se gaseste fisierul.
Exemplu: f.close(); g.close();
Afisarea in fisier

Se face la fel ca si afisarea pe ecran numai ca metoda cout se inlocuieste cu numele variabilei de acces la fisier.
Exemplu:
g<<23<’’ ’’;
g<<"Hello World"<<endl;
 Citirea din fisier

Operatorul >> permite citirea datelor in variabila de orice tip, fara insa a trata caracterele albe
( spatii, salturi la linie noua ).

Citirea se face similar celei de la tastatura numai ca se inlocuieste metoda cin cu variabila de acces la fisier.
f>>x unde x e o variabila

Crearea unui fisier text in CodeBlocks:

Pasul 1: File-->New-->Empty File
Pasul 2: Yes(Add file to project)
Pasul 3: Salvam fisierul nou creat cu numele dorit si extensia .txt(selectam  la extensii All files)
Pasul 4: Multiple Sellection(bifam debug si release)-->OK
Pasul 5:Completam fisierul cu date asa cum cere enuntul problemei
Pasul 6: Rulam programul (F9) moment in care programul preia datele din fisierul de intrare
Deschiderea unui fisier text in CodeBlocks: File-->Open-->dublu click pe fisierul dorit
Daca fisierul nu e in directorul curent se da calea.
Exemple
Se considera fisierul text cifre.txt care contine pe o singura linie si separate prin spatii 10 numere intregi de maxim 4 cifre fiecare. Sa se afiseze intr-un altfisier rezultat.txt suma acestor numere.
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
int x; long s=0;
ifstream f("cifre.txt");
ofstream g("rezultat.txt");
int i;
for(i=1;i<=10;i++) {
f>>x; s=s+x; }
f.close();
g<<"suma este="<<s;
g.close();
return 0;
}