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:

fstream könyvtár
fstream könyvtár

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:

Fájlok megnyitása

Itt van egy képernyőkép a kódról:

Fájlok megnyitása

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
  2. Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
  3. Szerelje be az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  4. Hívja meg a main() függvényt. A program logikájának a testén belül kell lennie.
  5. Hozzon létre egy objektumot az fstream osztályból, és adja meg a my_file nevet.
  6. 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.
  7. Használja az if utasítást annak ellenőrzésére, hogy a fájl létrehozása nem sikerült-e.
  8. Üzenet, amelyet ki kell nyomtatni a konzolon, ha a fájl nem jött létre.
  9. Az if utasítás törzsének vége.
  10. Használjon else utasítást annak megadására, hogy mi a teendő, ha a fájl létrejött.
  11. Üzenet, amelyet ki kell nyomtatni a konzolon, ha a fájl létrejött.
  12. Alkalmazza a close() függvényt az objektumra a fájl bezárásához.
  13. Az else utasítás törzsének vége.
  14. A programnak értéket kell visszaadnia, ha sikeresen befejeződik.
  15. 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:

Hogyan írjunk a Fájlokba

Itt van egy képernyőkép a kódról:

Hogyan írjunk a Fájlokba

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
  2. Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
  3. Szerelje be az std névteret a programba, hogy az osztályait hívás nélkül használja.
  4. Hívja meg a main() függvényt. A program logikáját hozzá kell adni a függvény törzséhez.
  5. Hozzon létre egy példányt az fstream osztályból, és adja meg a my_file nevet.
  6. 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.
  7. Használjon if utasítást annak ellenőrzésére, hogy a fájl nincs-e megnyitva.
  8. A konzolon nyomtatandó szöveg, ha a fájl nincs megnyitva.
  9. Az if utasítás törzsének vége.
  10. Használjon else utasítást annak megadására, hogy mi a teendő, ha a fájl létrejött.
  11. A konzolon nyomtatandó szöveg, ha a fájl létrejött.
  12. Írjon szöveget a létrehozott fájlba.
  13. A fájl bezárásához használja a close() függvényt.
  14. Az else utasítás törzsének vége.
  15. A programnak értéket kell visszaadnia a sikeres befejezés után.
  16. 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:

Olvassa el a Fájlokból

Nincs ilyen fájl

Itt van egy képernyőkép a kódról:

Olvassa el a Fájlokból

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a programba a funkcióinak használatához.
  2. Szerelje be az fstream fejlécfájlt a programba az osztályok használatához.
  3. Szerelje be az std névteret a programba, hogy az osztályait hívás nélkül használja.
  4. Hívja meg a main() függvényt. A program logikáját hozzá kell adni a függvény törzséhez.
  5. Hozzon létre egy példányt az fstream osztályból, és adja meg a my_file nevet.
  6. 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.
  7. Használjon if utasítást annak ellenőrzésére, hogy a fájl nem létezik-e.
  8. A konzolon nyomtatandó szöveg, ha a fájl nem található.
  9. Az if utasítás törzsének vége.
  10. Használjon else utasítást annak megadásához, hogy mi a teendő, ha a fájl megtalálható.
  11. Hozzon létre egy char változó ch.
  12. Hozzon létre egy míg hurok a fájl tartalmának iterációjához.
  13. Írja/tárolja a fájl tartalmát a ch változóba.
  14. 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.
  15. 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.
  16. Nyomtassa ki a ch változó tartalmát a konzolon.
  17. Vége a míg test.
  18. Az else utasítás törzsének vége.
  19. Hívja a close() függvényt a fájl bezárásához.
  20. A programnak értéket kell visszaadnia a sikeres befejezés után.
  21. 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.