Standardna biblioteka-fstream
- ofstream – Ovaj tip podataka predstavlja stream za izlazne datoteke (of odnosi se na output). Pravac izlaza je sa programa na datoteku. Ovaj tip podataka se koristi za kreiranje datoteka i pisanje informacija na njih. Ne može se koristiti za čitanje datoteka.
- ifstream . Ovaj tip podataka predstavlja stream za ulazne datoteke (i odnosi se na input ). Pravac ulaza je sa datoteke prema programu. Ovaj tip podataka se koristi za čitanje informacija sa datoteka. Ne može se koristiti za kreiranje datoteka i pisanje u njih.
- fstream . Ovaj tip podataka predstavlja stream za datoteke, ima karateristike i ofstream i ifstream . On može kreirati datoteke, pisati na njih i čitati sa njih
Pristup datotekama
Kada program pristupa datotekama, bez obzira da li ih čita, ili u njih upisuje, ili oboje, prolazi kroz sledeće korake:
- Datoteka prvo mora da se otvori. Ovo otvara put u komunikaciji između datoteke i stream objekta u programu (fstream ,ifstream, ofstream), koji se koristi u pristupu datoteci.
- Nakon otvaranja program čita sa datoteke, piše na nju, ili čini oboje.
- Na kraju, program zatvara datoteku. Ovo je bitan korak, pošto održavanje komunikacije između datoteke i stream objekta zahteva resurse, tako da zatvaranje datoteke oslobađa ove resurse kada više nisu potrebni. Uz to, postoji mogučnost da se kasnije u programu nemože pristupiti datoteci ako nije zatvorena pre predhodnog pristupa.
Bez obzira da li se sadržaj datoteke treba pročitati ili se u datoteci treba upisati neki podaci, datoteka prvo treba da se otvori.
Otvaranje datoteke za pisanje
Otvaranje pomoću funkcije open
Otvaranje pomoću konstruktora
Konstruktori su funkcije koje se automatski pozivaju kada se pokušava kreirati instanca nekog objekta (instanca prema objektu je isto što i varijabla prema tipu podatka). Oni mogu biti opterećeni (overloaded ), tako da isti objekat može imati konstruktor sa nijednim, jednim, dva, il iviše argumenata. U prethodnim primerima (npr.fstream izlaz;) korištene su naredbe sa konstruktorima bez argumenata. Naredni primeri pokazuju upotrebu konstruktora sa jednim i dva argumenta, respektivno:
Otvaranje datoteka za čitanje
Otvaranje datoteke za čitanje:
Zatvaranje datoteka
Svaka otvorena datoteka se treba zatvoriti pre nego se napusti program. To je zbog toga što svaka otvorena datoteka zahteva sistemske resurse. Osim toga, neki operativni sistemi imaju ograničen broj otvorenih datoteka kojima se ne ‘manipuliše’.Zatvranje datoteka se vrši pomoću funkcije close. Primeri pokazuju njenu upotrebu pri zatvaranju datoteka za pisanje i čitanje
ofstream izlaz;
Upis u datoteku
Pogledajte video film
Pisanje podataka na datoteku se izvodi pomoću operatora za ispisivanje (<< ), kao što je to bio slučaj sa ispisivanjem na ekran (cout <<). Jedina razlika je u tome što se ovde koristi fstream ili iostrem objekat, a ne cout objekat. Sledeći program pokazuje primer upisivanja podataka u datoteku studenti.txt:
#include <fstream>
#include <iostream>
using namespace std;
int main ()
{
char podaci[80];
ofstream izlaz;
izlaz.open(„studenti.txt“);
cout << „Zapisivanje u datoteku“ << endl;
cout << „=======================“ << endl;
cout << „Upisite razred: „;
cin.getline(podaci, 80);
izlaz << podaci << endl;
cout << „Unesite broj studenata: „;
cin >> podaci;
cin.ignore();
izlaz << podaci << endl;
izlaz.close();
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main ()
{
string x;
ofstream izlaz;
izlaz.open(„podaci.txt“, ios::app);
while (x != „***“)
{
cout << „Unesite neki tekst (za kraj unesite ***):“ << endl;
cin >> x;
izlaz << x << endl;
}
izlaz.close();
}
Čitanje sa datoteka
Pogledajte video film
Čitanje podataka sa datoteka obavlja se pomoću operatora za čitanje (>>) kao što je to slučaj sa ispisivanjem sa tastature (cin>>). Sl. primer nadopunjava onaj iz prethodnog poglavlja, tj. nakon što korisnik upisuje informacije na datoteku, program čita iste podatke i ispisuje ih na ekran.
#include <fstream>
#include <iostream>
using namespace std;
int main ()
{
string podaci;
ofstream izlaz;
izlaz.open(„studenti.txt“);
cout << „Upisivanje u datoteku“ << endl;
cout << „=====================“ << endl;
cout << „Unesite razred: „;
getline(cin,podaci);
izlaz << podaci << endl;
cout << „Unesite broj studenata: „;
cin >> podaci;
cin.ignore();
izlaz << podaci << endl;
izlaz.close();
ifstream ulaz;
cout << „Citanje sa datoteke“ << endl;
cout << „===================“ << endl;
ulaz.open(„studenti.txt“);
getline(ulaz,podaci);
cout << podaci << endl;
getline(ulaz,podaci);
cout << podaci << endl;
ulaz.close();
return 0;
}
return 0;