A leírásban szereplő változók deklarációi:
ifstream fin; ofstream fout; istringstream sin; ostringstream sout; istream ins; ostream outs; const char* fname; // nem string! int mode, n; string str; char ch;
A fájlok műveleteihez az <fstream>, a stringstreamek műveleteihez a <sstream> fejlécfájlok kellenek.
Szintaxis | Jelentés |
---|---|
Fájlok: deklaráció, megnyitás, bezárás | |
ifstream fin; ofstream fout; | Megnyitás nélküli deklaráció, kell utána open |
ifstream fin(fname); ifstream fin(fname, mode); | Deklaráció és megnyitás egyben. Ha a mode nincs megadva, ios_base::in az alapértelmezés. |
ofstream fout(fname); ofstream fout(fname, mode); | Deklaráció és megnyitás egyben. Ha a mode nincs megadva, ios_base::out | ios_base::trunc az alapértelmezés. |
fin.open(fname); fin.open(fname, mode); | Megnyitás, mode alapértelmezett értéke ios_base::in. |
fout.open(fname); fout.open(fname, mode); | Megnyitás, mode alapértelmezett értéke ios_base::out | ios_base::trunc. |
fin.close(); fout.close(); | Bezárás |
Stringek | |
istringstream sin; ostringstream sout; | Deklaráció üres stringgel |
istringstream sin(str); | Deklaráció, az olvasó műveletek az str stringből fognak olvasni |
ostringstream sout(str); ostringstream(str, mode); | Deklaráció, az eredmény string kezdő tartalma az str string. A mode alapértelmezett értéke ios_base::out. Ehelyett gyakran a ios_base::out | ios_base::app érték kell. |
sin.str(str); | A további olvasó műveletek az str stringből fognak olvasni |
str = sout.str(); | Lekérdezi az eddig kiírások eredményeként előállt stringet. |
A mode paramétert jelzőbitekből kell összerakni bináris vagy művelettel (egy darab | a jele). A jelzőbitek: | |
ios_base::in | Megnyitás olvasásra |
ios_base::out | Megnyitás írásra |
ios_base::trunc | A régi tartalom törlése írásra megnyitáskor (truncate) |
ios_base::app | A régi tartalomhoz hozzáfűzés minden íráskor (append) |
ios_base::ate | Megnyitáskor a régi adatsor végétől kezdődik az írás (at end) |
ios_base::binary | Íráskor, olvasáskor a sorvége jelek átalakításának kikapcsolása |
Állapot lekérdezése, módosítása (minden író ill. olvasó művelet csak good állatpoban csinál valamit!) | |
stream.good() | Használható a stream |
stream.fail() | Hiba történt az utolsó művelet során |
stream.bad() | Kijavíthatatlan hiba történt az utolsó művelet során |
stream.eof() | A legutolsó művelet során elérte a stream a fájl végét (end of file) |
stream.clear() | Visszaállítja good-ra a stream állapotát |
Formázatlan írás, olvasás | |
ch = ins.get(); | Beolvas egy karaktert, függvény eredményként adja vissza (így bármely kifejezésben használható). Ha nem sikerült (fájl vége), akkor az EOF konstans értéket adja vissza. |
ins.get(ch); | Beolvas egy karaktert, eltárolja a ch változóban. Fájl vége esetén az EOF konstans értéke kerül ch-ba. |
outs.put(ch); | Kiírja a ch karaktert. |
Formázott írás, olvasás | |
ins >> var; | A var változóba próbál értéket beolvasni, a változó típusa alapján értelmezve a szöveg formáját |
getline(ins, str); | Beolvas egy sort az str változóba. A sorvége jelet is beolvassa, de nem teszi bele a változóba. |
outs << var; | A var változó értékét írja ki, a típusának megfelelő formában |
Manipulátorok (módosítók) az <iomanip> fejlécfájlból | |
outs << showpoint << ... outs << noshowpoint << ... | Valós típusú, egész értékű számok kiírásakor showpoint után kiírja a 0 értékű törtrészt, különben nem |
outs << showpos << ... outs << noshowpos << ... | Számok kiírásakor showpos után kiírja a pozitív előjelet, különben nem |
outs << dec << ... outs << hex << ... outs << oct << ... | Egész számok tizes, tizenhatos ill. nyolcas számrendszerben való kiírásának beállítása |
outs << showbase << ... outs << noshowbase << ... | Nem tizes számrendszer esetén showbase után megjeleníti a számrendszer jelét (0 ill. 0x prefix), különben nem |
outs << setprecision(n) << ... | Valós számok kiírásakor n tizedes jegyet fog kiírni |
outs << setw(n) << ... | A következő adatot (a továbbiakat nem!) n karakter szélesen fogja megjeleníteni (set width) |
outs << setfill(ch) << ... | Ha egy adat nem tölti ki a kellő szélességet, akkor ch karakterekkel fogja kipótolni a helyet (alapértelmezés: space) |
outs << left << ... outs << right << ... outs << internal << ... | A kellő szélesség kitöltése során balra ill. jobra igazítja az adatot; internal esetén az előjel és a szám közé teszi a kitöltő karaktereket (csak szám típus esetén). |
outs << endl outs << flush | Kiürítik a puffert, valamint az endl egy sorvége jelet is kiír |
ins >> skipws >> ... ins >> noskipws >> ... | Beolvasás során noskipws után a helyköz karaktereket is beolvassák a formázott karakterolvasó műveletek, különben átlépik őket |
ins >> ws >> ... | Átlépi a bevezető helyköz karaktereket |
ins >> setw(n) >> ... | A következő string beolvasás során (a továbbiakban nem!) legfeljebb n karaktert olvas be |