Elõre: Include
file-ok és függvények Fel: Programozás
C++-ban Vissza: Operator
overloading
C++ I/O könyvtárak
Az stdio.h include file-ban deklarált szabványos
folyam jellegû formátumozott I/O függvények (mint
például printf, scanf, stb.) mellett a
C++ újabb hasonló, folyam-orientált függvényeket
tartalmaz az iostreams könyvtárban. Az új C++
I/O függvények deklarációját az iostream.h
include file-ban találhatjuk. Az új I/O könyvtár
használata elõnyöket nyújt az stdio.h-hoz
képest. Ezek egyike, hogy a függvények szintaxisa sokkal
egyszerûbb, elegánsabb, olvashatóbb. Egy másik
tényezõ, hogy a C++ folyamkezelõ mechanizmusa a leggyakrabban
elõforduló esetekben hatékonyabb és rugalmasabb,
mint a hagyományos C folyamkezelés. A formátumozott
kimenet elõállítása az operátor-overloadingnak
köszönhetõen például sokszor egyszerûbb,
mint a printf-fel. Ugyanazon operátor használható
mind elõredefiniált, mind pedig a felhasználó
által definiált adattípusok kiiratására.
A C++-ban négyelõre definiált folyam jellegû
objektum van. Ezek a következõk:
-
cin a szabványos bemenet, amely általában
a billentyûzet. A hagyományos C-beli stdin-nek felel
meg.
-
cout a szabványos kimenet, amely általában
a képernyõ. A hagyományos C-beli stdout-nak
felel meg.
-
cerr a szabványos hibakimenet, amely általában
a képernyõ. A hagyományos C-beli stderr-nek felel
meg.
-
clog a cerr teljesen bufferelt változata, nincs
megfelelõje a C-ben.
Ezek a folyamok tetszõleges eszközre vagy file-ba átirányíthatók,
míg C-ben csak az stdin és az stdout irányítható
át. Az iostream könyvtár elemei hierarchikusan
épülnek egymásra. A könyvtár elemei az alap-primitívtõl
a legspecializáltabb elemig a következõk:
-
streambuf a memóriabuffereket és az azokat kezelõ
eljárásokat tartalmazza,
-
ios a folyamok állapotváltozóit és
a hibákat kezeli,
-
istream egy streambuf-ból származó
formátumozott és kötetlen formátumú karakterfolyam
konverzióját végzi,
-
ostream egy streambuf-ba küldendõ formátumozott
vagy kötetlen formátumú karakterfolyam konverzióját
végzi,
-
iostream istream-et és ostream-et kombinálja
annak érdekében, hogy kétirányú folyamokat
lehessen kezelni,
-
istream_withassign a cin folyam számára
definiál konstruktorokat és értékadó
operátorokat,
-
ostream_withassign a cout, cerr és a
clog folyamok számára definiál konstruktorokat
és értékadó operátorokat.
Az istream osztály az overloading segítségével
egy új jelentést ad a >> operátor számára
a standard elemi típusok esetére. Ha az x változó
típusa standard elemi típus, akkor a cin>>x
kifejezés mellékhatásaként az x típusának
(char, int, long, float, double)
megfelelõ konverziós input rutin az x változónak
megfelelõ memóriacímre teszi a standard bemenetrõl
érkezõ adatot. A kifejezés értékeként
cin-t kapjuk vissza.
Az elõbbiekhez hasonló módon, az ostream
osztályban található a << operátor új
értelmezése. A cout<<x; utasítás
hatására az x változó típusának
megfelelõ output rutin a szabványos kimeneti állományra
küldi az x értékének megfelelõ
karaktersorozatot és visszaadja cout-ot. (Itt x
típusa szintén valamelyik standard elemi típus lehet.)
A << és >> operátor-függvények a megfelelõ
folyam osztályára vonatkozó referencia típusú
visszatérési értéket adnak, így több
ilyen operátor láncba fûzhetõ:
int i = 0, x = 243;
double d = 0;
cout << "The value of x is " << x << '\n';
cin >> i >> d; // Egy int-et, utana SPACE-t,
// majd egy double-t var.
IBM PC specifikus lehetõségek
Elõre: Include
file-ok és függvények Fel: Programozás
C++-ban Vissza: Operator
overloading