Szöveges állományok

Az eddigi munkánk során az értékeket billentyűzetről vittük be és egy bizonyos ablakba kaptuk az eredményt, így a beírt és kiírt értékek elvesznek. Ezt a problémát kiküszöbölhetjük úgy, hogy a be- és kimeneti adatokat a szöveges állományokból vesszük ki, illetve szöveges állományokba íratjuk ki, így a későbbiek során bármikor elérhetőek lesznek.

A szöveges állományok használata akkor is nagyon előnyös, amikor egy programot többször is leszeretnénk futtatni ugyanazokra az értékekre. Ebben az esetben ,ha bemeneti adatok egy szöveges állományban vannak tárolva, akkor a program automatikusan onnan olvassa ki a bemeneti értékeket és nem szükséges minden futtatáskor nekünk bekérni.

A szöveges állományok létrehozhatók egy egyszerű szövegszerkesztővel (Jegyzettömb, Notepad++, Sublime Text, ...), utána meg egyszerűen módosíthatók. A szöveges állományok kiterjesztése, a .txt-n kívül, megváltoztathatóak a .in, .out, .stb... kifejezésekre.

A szöveges állományokat csak szekvenciálisan lehet használni, ami azt jelenti, hogy a szöveges állomány adatait csak egymás utáni sorrendben lehet elérni (csak az állomány elejétől a vége fele tudunk olvasni, mindig a legelső karaktert tudjuk elérni elsőként, tehát nem lehet az állományt középről olvasni egyből).

Az állományok kezelése 3 nagy lépésre osztható:

  • Az állomány megnyitása

  • Az állomány feldolgozása

  • Az állomány bezárása

Az állomány megnyitása

Ahhoz, hogy állományokkal dolgozni tudjunk, ahhoz be kell építsünk az "fstream" nevű fejlécfájlt.

#include < fstream >

Állományok megnyitása során figyelembe kell vennünk azt, hogy meglévő állományt, vagy esetleg új állományt akarunk megnyitni, ennek függvényében 3 esetet különböztetünk meg:

  • Létező (bemeneti) állomány megnyitása olvasás céljából

  • Új (kimeneti) állomány megnyitása

  • A fájlok bezárása

Létező (bemeneti) állomány megnyitása olvasás céljából

Fájlból olvasáshoz először is létre kell hozni egy bemeneti adatállomány típusú fájlváltozót, ezután meg kell nyitni az állományt. Ekkor jöhet az állomány hozzárendelése a fájl változóhoz. Megnyitás után az állománymutató az állomány elején fog elhelyezkedni.

ifstream FÁJLVÁLTOZÓ;
FÁJLVÁTOZÓ.open( "FÁJLNÉV.KITERJESZTÉS" );

Ha az állomány nem a program aktuális könyvtárában van, akkor a fájlnév előtt meg kell adni az elérési útvonalat is.

Megjegyzések

A deklarálást és megnyitást összevonhatjuk egy sorba.

ifstream FÁJLVÁLTOZÓ( "FÁJLNÉV.KITERJESZTÉS" );

Új (kimeneti) állomány megnyitása

Új állományt csak akkor tudunk létrehozni, ha először deklarálunk egy kimeneti adatállomány típusú változót, majd társítjuk egy fizikai állománynévhez, mely létre fog jönni és megnyitódik.

ofstream FÁJLVÁLTOZÓ;
FÁJLVÁLTOZÓ.open( "FÁJLNÉV.KITERJESZTÉS" );

Megjegyzések

Vigyáznunk kell ezzel az utasítással, hiszen ha a meglévő állományt nyitjuk meg újként akkor az állomány tartalma elveszik.

Írás és olvasás állományokból

Állományból beolvasni a standard beolvasáshoz hasonlóan lehet. Ha másképpen nem állítjuk, akkor szóköztől szóközig olvas a program és ezek az adatok kerülnek a megadott változókba.

FÁJLVÁLTOZÓ >> VÁLTOZÓ_1 >> VÁLTOZÓ_2 >> ... >> VÁLTOZÓ_n;

Állományba írni szintén a standard kiíratáshoz hasonlóan lehet.

FÁJLVÁLTOZÓ << KIFEJEZÉS_1 << KIFEJEZÉS_2 << ... << KIFEJEZÉS_n (<< endl);

A fájlok bezárása

A megnyitott fájlokat a következőképpen tudjuk bezárni:

FÁJLVÁLTOZÓ.close();

Megjegyzések

A fájlokat kötelezően be kell zárni a feldolgozás után.

Last updated