U C++ ne postoje naredbe niti operatori za ulaz i izlaz podataka, već se ulaz i izlaz realizuju
odgovarajućim klasama.
Svakoj otvorenoj datoteci, kao i standardnom ulazu/izlazu pridružuje se po primjerak jedne od
tih klasa. Pristup nekoj datoteci ostvaruje se pristupanjem tim objektima putem njihovih
funkcija članica ili prijateljskih funkcija.
Sve potrebne deklaracije vezane za klase za ulaz i izlaz podataka nalaze se u <iostream.h>
Klasa za ulaz podataka naziva se istream. Klasa za izlaz podataka naziva se ostream.
Objekat klase istream za pristup standardnom ulazu (tastaturi) zove se cin.
Objekat klase ostream za pristup standardnom izlazu (monitor) zove se cout.
Ova dva objekta (cin, cout) automatski se stvaraju na početku izvršavanja svakog programa.
Operatori za čitanje i pisanje podataka (uz primjenu ulazno-izlaznih konverzija) definisani su za
sve standardne tipove podataka preklapanjem operatora >> i <<.
Prototipovi odgovarajućih operatorskih funkcija su:
istream & operator>> (istream &dat, Tip &data);
data je odredište za podatke i ne moze biti const
(za sada cin)
ostream & operator<< (ostream &dat, const Tip &data);
data je izvor podataka
(za sada cout)
Obje funkcije vraćaju upućivač na datoteku dat (za sada cin i cout). Ovi upućivači su ujedno i
prvi operandi operatorskih funkcija. Ovo omogućava kaskadno (lančano) pozivanje operatora
>> i <<, odnosno prenošenje više podataka jednim izrazom. Ovo je moguće jer je njihova
asocijativnost slijeva udesno.
Programer može preklapanjem operatora >> i << da obezbijedi operatore za U/I konverzije
svojih klasa. Ove funkcije moraju da budu prijateljske funkcije korisničkim klasama. Ne mogu
da budu funkcije članice, jer prvi objekat nije korisnički definisan!
Evo jedan jednostavni primjer
Code:
#include <iostream.h>
class Complex
{
friend ostream & operator<< (ostream &dat, const Complex &z)
{ return dat << "(" << z.real << "," << z.imag << ")" ; }
public:
Complex (double re=0, double im=0) : real(re), imag(im) {}
private:
double real, imag;
};
main()
{
Complex z(1,1);
cout << "z = " << z << endl;
}
Nadam se da sam bar malo pomogao
Pozdrav