C++ Fájlkezelés: Fájlok megnyitása, írása, olvasása és bezárása C++
Mi az a fájlkezelés C++?
A fájlok véglegesen tárolják az adatokat egy tárolóeszközön. Fájlkezeléssel a program kimenete fájlban tárolható. Különféle műveletek hajthatók végre az adatokon a fájlban.
A folyam egy eszköz absztrakciója, ahol bemeneti/kimeneti műveleteket hajtanak végre. Az adatfolyamot meghatározatlan hosszúságú karakterek célpontjaként vagy forrásaként is megjelenítheti. Ezt a használatuk határozza meg. C++ olyan könyvtárat biztosít, amely a fájlkezelési módszereket tartalmazza. Beszéljük meg.
Az fstream könyvtár
Az fstream könyvtár biztosítja C++ programozók három osztállyal a fájlokkal való munkához. Ezek az osztályok a következőket tartalmazzák:
- folyamon kívül– Ez az osztály egy kimeneti adatfolyamot jelent. Fájlok létrehozására és információk fájlba írására szolgál.
- ifstream– Ez az osztály egy bemeneti adatfolyamot képvisel. Adatfájlokból információk olvasására szolgál.
- patak– Ez az osztály általában egy fájlfolyamot jelent. Offstream/ifstream képességekkel érkezik. Ez azt jelenti, hogy képes fájlokat létrehozni, fájlba írni, adatfájlokból olvasni.
A következő kép megkönnyíti a megértést:
Az fstream könyvtár fenti osztályainak használatához fejlécfájlként kell szerepeltetnie a programjában. Természetesen az #include preprocessor direktívát fogja használni. Az iostream fejlécfájlt is bele kell foglalnia.
Hogyan lehet megnyitni a fájlokat
Mielőtt bármilyen műveletet végrehajtana egy fájlon, először meg kell nyitnia azt. Ha írni kell a fájlba, nyissa meg fstream vagy ofstream objektumokkal. Ha csak olvasni kell a fájlból, nyissa meg az ifstream objektum segítségével.
A három objektumban, vagyis az fstreamben, az ofstreamben és az ifstreamben az open() függvény van definiálva. A függvény a következő szintaxist veszi fel:
open (file_name, mode);
- A file_name paraméter a megnyitandó fájl nevét jelöli.
- A mód paraméter nem kötelező. A következő értékek bármelyikét veheti fel:
Érték | Leírás |
---|---|
ios:: kb | A Hozzáfűzés mód. A fájlhoz küldött kimenet hozzá lesz fűzve. |
ios::ate | Megnyitja a fájlt a kimenethez, majd áthelyezi az olvasási és írási vezérlőt a fájl végére. |
ios::in | Megnyitja a fájlt olvasásra. |
ios::out | Megnyitja a fájlt írásra. |
ios::trunc | Ha létezik fájl, akkor a fájlelemeket a megnyitás előtt csonkolni kell. |
Egyszerre két mód is használható. A | gombbal kombinálhatja őket (OR) operátor.
Példa 1:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
output:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
- Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
- Szerelje be az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main() függvényt. A program logikájának a testén belül kell lennie.
- Hozzon létre egy objektumot az fstream osztályból, és adja meg a my_file nevet.
- Alkalmazza az open() függvényt a fenti objektumra új fájl létrehozásához. Az out mód lehetővé teszi, hogy a fájlba írjunk.
- Használja az if utasítást annak ellenőrzésére, hogy a fájl létrehozása nem sikerült-e.
- Üzenet, amelyet ki kell nyomtatni a konzolon, ha a fájl nem jött létre.
- Az if utasítás törzsének vége.
- Használjon else utasítást annak megadására, hogy mi a teendő, ha a fájl létrejött.
- Üzenet, amelyet ki kell nyomtatni a konzolon, ha a fájl létrejött.
- Alkalmazza a close() függvényt az objektumra a fájl bezárásához.
- Az else utasítás törzsének vége.
- A programnak értéket kell visszaadnia, ha sikeresen befejeződik.
- A main() függvénytörzs vége.
Fájlok bezárása
Egyszer C++ program automatikusan megszűnik
- öblíti a patakokat
- felszabadítja a lefoglalt memóriát
- bezárja a megnyitott fájlokat.
Programozóként azonban meg kell tanulnia bezárni a megnyitott fájlokat a program leállása előtt.
Az fstream, ofstream és ifstream objektumok a close() függvényt tartalmazzák a fájlok bezárására. A függvény a következő szintaxist veszi fel:
void close();
Hogyan írjunk a Fájlokba
Fájlba írhat közvetlenül a sajátjából C++ program. Ehhez használja az adatfolyam beillesztési operátort (<<). A fájlba írandó szöveget idézőjelek közé kell tenni.
Mutassuk meg ezt.
Példa 2:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
output:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
- Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
- Szerelje be az std névteret a programba, hogy az osztályait hívás nélkül használja.
- Hívja meg a main() függvényt. A program logikáját hozzá kell adni a függvény törzséhez.
- Hozzon létre egy példányt az fstream osztályból, és adja meg a my_file nevet.
- Az open() függvény segítségével hozzon létre egy új fájlt my_file.txt néven. A fájl kimenő módban nyílik meg, és írhat bele.
- Használjon if utasítást annak ellenőrzésére, hogy a fájl nincs-e megnyitva.
- A konzolon nyomtatandó szöveg, ha a fájl nincs megnyitva.
- Az if utasítás törzsének vége.
- Használjon else utasítást annak megadására, hogy mi a teendő, ha a fájl létrejött.
- A konzolon nyomtatandó szöveg, ha a fájl létrejött.
- Írjon szöveget a létrehozott fájlba.
- A fájl bezárásához használja a close() függvényt.
- Az else utasítás törzsének vége.
- A programnak értéket kell visszaadnia a sikeres befejezés után.
- A main() függvény törzsének vége.
Hogyan olvassunk fájlokból
A fájlokból információkat olvashat be a sajátjába C++ program. Ez lehetséges a folyamkivonás operátorral (>>). Ugyanúgy használja az operátort, mint a felhasználói bevitel beolvasására a billentyűzetről. A cin objektum használata helyett azonban az ifstream/fstream objektumot használja.
Példa 3:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
output:
Nincs ilyen fájl
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
- Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
- Szerelje be az std névteret a programba, hogy az osztályait hívás nélkül használja.
- Hívja meg a main() függvényt. A program logikáját hozzá kell adni a függvény törzséhez.
- Hozzon létre egy példányt az fstream osztályból, és adja meg a my_file nevet.
- Az open() függvény segítségével hozzon létre egy új fájlt my_file.txt néven. A fájl in módban nyílik meg az olvasáshoz.
- Használjon if utasítást annak ellenőrzésére, hogy a fájl nem létezik-e.
- A konzolon nyomtatandó szöveg, ha a fájl nem található.
- Az if utasítás törzsének vége.
- Használjon else utasítást annak megadásához, hogy mi a teendő, ha a fájl megtalálható.
- Hozzon létre egy char változó ch.
- Hozzon létre egy míg hurok a fájl tartalmának iterációjához.
- Írja/tárolja a fájl tartalmát a ch változóba.
- Használjon if feltételt és eof() függvényt, azaz a fájl végét, hogy a fordító továbbra is olvasson a fájlból, ha nem éri el a végét.
- Használjon break utasítást az olvasás leállításához a fájlból, ha elérte a végét.
- Nyomtassa ki a ch változó tartalmát a konzolon.
- Vége a míg test.
- Az else utasítás törzsének vége.
- Hívja a close() függvényt a fájl bezárásához.
- A programnak értéket kell visszaadnia a sikeres befejezés után.
- A main() függvény törzsének vége.
Összegzésként
- Fájlkezeléssel egy program kimenete elküldhető és fájlban tárolható.
- Ezután számos művelet alkalmazható az adatokra a fájlban.
- Az adatfolyam egy absztrakció, amely egy olyan eszközt jelöl, ahol bemeneti/kimeneti műveleteket hajtanak végre.
- Egy adatfolyamot meghatározatlan hosszúságú karakterek célpontjaként vagy forrásaként is ábrázolhatjuk.
- Az fstream könyvtár biztosítja C++ programozók fájlkezelési módszerekkel.
- A könyvtár használatához fel kell vennie azt a programjába az #include preprocessor direktíva segítségével.