C++ Failide käsitsemine: kuidas faile avada, kirjutada, lugeda, sulgeda C++

Mis on failihaldus C++?

Failid salvestavad andmeid püsivalt salvestusseadmesse. Failikäsitluse abil saab programmi väljundit faili salvestada. Failis olles saab andmetega teha erinevaid toiminguid.

Voog on seadme abstraktsioon, kus sooritatakse sisend/väljundoperatsioone. Saate kujutada voogu sihtkohana või määramata pikkusega tähemärkide allikana. Selle määrab nende kasutamine. C++ pakub teile teeki, mis sisaldab failide käsitlemise meetodeid. Arutame seda.

Fstreami raamatukogu

Fstream raamatukogu pakub C++ programmeerijad kolme klassiga failidega töötamiseks. Need klassid hõlmavad järgmist:

  • väljaspool voolu– See klass esindab väljundvoogu. Seda kasutatakse failide loomiseks ja failidesse teabe kirjutamiseks.
  • ifstream– See klass esindab sisendvoogu. Seda kasutatakse andmefailidest teabe lugemiseks.
  • voolu– See klass esindab üldiselt failivoogu. See on varustatud voovaba/ifstreami võimalustega. See tähendab, et see on võimeline faile looma, failidesse kirjutama ja andmefailidest lugema.

Järgmine pilt muudab selle mõistmise lihtsaks:

fstream raamatukogu
fstream raamatukogu

Fstream teegi ülaltoodud klasside kasutamiseks peate selle oma programmi päisefailina lisama. Loomulikult kasutate #include eelprotsessori direktiivi. Peate lisama ka iostreami päisefaili.

Kuidas faile avada

Enne failiga mis tahes toimingu tegemist peate selle esmalt avama. Kui teil on vaja faili kirjutada, avage see fstream või ofstream objektide abil. Kui teil on vaja ainult failist lugeda, avage see objekti ifstream abil.

Kolmel objektil, st fstream, ofstream ja ifstream, on funktsioon open() määratletud. Funktsioon võtab järgmise süntaksi:

open (file_name, mode);
  • Parameeter file_name tähistab avatava faili nime.
  • Režiimi parameeter on valikuline. See võib võtta mis tahes järgmistest väärtustest:
Väärtus Kirjeldus
ios:: rakendus Lisamise režiim. Failile saadetud väljund lisatakse sellele.
ios::ate See avab väljundi jaoks faili ja liigutab lugemise ja kirjutamise juhtelemendi faili lõppu.
ios::in See avab faili lugemiseks.
ios::out See avab faili kirjutamiseks.
ios::trunc Kui fail on olemas, tuleks failielemendid enne selle avamist kärpida.

Võimalik on kasutada kahte režiimi korraga. Kombineerite need kasutades | (VÕI) operaator.

Näide 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;
}

Väljund:

Ava failid

Siin on koodi ekraanipilt:

Ava failid

Koodi selgitus:

  1. Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
  2. Klasside kasutamiseks lisage programmi fstream päisefail.
  3. Lisage meie koodi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
  4. Kutsuge funktsioon main(). Programmi loogika peaks minema selle kehasse.
  5. Looge fstream klassi objekt ja andke sellele nimi minu_fail.
  6. Uue faili loomiseks kasutage ülaltoodud objektil funktsiooni open(). Väljundrežiim võimaldab meil faili kirjutada.
  7. Kasutage if-lauset, et kontrollida, kas faili loomine ebaõnnestus.
  8. Teade, mis tuleb konsoolil printida, kui faili ei loodud.
  9. Kui-lause põhiosa lõpp.
  10. Kasutage käsku else, et määrata, mida teha, kui fail on loodud.
  11. Teade, mis tuleb konsoolil printida, kui fail on loodud.
  12. Faili sulgemiseks rakendage objektile funktsiooni close().
  13. Muu lause põhiosa lõpp.
  14. Programm peab tagastama väärtuse, kui see on edukalt lõpule viidud.
  15. Funktsiooni main() keha lõpp.

Kuidas faile sulgeda

Ükskord C++ programm lõpeb, see automaatselt

  • loputab ojasid
  • vabastab eraldatud mälu
  • sulgeb avatud failid.

Programmeerijana peaksite siiski õppima avatud faile sulgema enne programmi lõpetamist.

Objektidel fstream, ofstream ja ifstream on failide sulgemiseks funktsioon close(). Funktsioon võtab järgmise süntaksi:

void close();

Kuidas failidesse kirjutada

Saate faili kirjutada otse oma C++ programm. Kasutate selleks voo sisestamise operaatorit (<<). Faili kirjutatav tekst peaks olema jutumärkides.

Näitame seda.

Näide 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;
}

Väljund:

Kuidas failidesse kirjutada

Siin on koodi ekraanipilt:

Kuidas failidesse kirjutada

Koodi selgitus:

  1. Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
  2. Klasside kasutamiseks lisage programmi fstream päisefail.
  3. Lisage programmi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
  4. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
  5. Looge klassi fstream eksemplar ja andke sellele nimi minu_fail.
  6. Kasutage funktsiooni open(), et luua uus fail nimega minu_fail.txt. Fail avatakse sellesse kirjutamiseks väljundrežiimis.
  7. Kasutage if-lauset, et kontrollida, kas faili pole avatud.
  8. Kui faili ei avata, konsoolil prinditav tekst.
  9. Kui-lause põhiosa lõpp.
  10. Kasutage käsku else, et määrata, mida teha, kui fail on loodud.
  11. Tekst, mis prinditakse konsoolil, kui fail on loodud.
  12. Kirjutage loodud faili teksti.
  13. Faili sulgemiseks kasutage funktsiooni close().
  14. Muu lause põhiosa lõpp.
  15. Programm peab pärast edukat lõpetamist tagastama väärtuse.
  16. Funktsiooni main() keha lõpp.

Kuidas failidest lugeda

Saate lugeda teavet failidest oma C++ programm. See on võimalik voo eraldamise operaatori (>>) abil. Operaatorit kasutate samal viisil, kui kasutate seda klaviatuurilt kasutaja sisendi lugemiseks. Objekti cin asemel kasutate aga objekti ifstream/ fstream.

Näide 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;
}

Väljund:

Loe failist

Sellist faili pole

Siin on koodi ekraanipilt:

Loe failist

Koodi selgitus:

  1. Selle funktsioonide kasutamiseks lisage programmi iostreami päisefail.
  2. Klasside kasutamiseks lisage programmi fstream päisefail.
  3. Lisage programmi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
  4. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
  5. Looge klassi fstream eksemplar ja andke sellele nimi minu_fail.
  6. Kasutage funktsiooni open(), et luua uus fail nimega minu_fail.txt. Fail avatakse sellest lugemiseks sisselülitatud režiimis.
  7. Kasutage if-lauset, et kontrollida, kas faili pole olemas.
  8. Kui faili ei leita, konsoolil prinditav tekst.
  9. Kui-lause põhiosa lõpp.
  10. Kasutage käsku else, et määrata, mida teha, kui fail leitakse.
  11. Loo char muutuja nimega ch.
  12. Loo samas silmus faili sisu kordamiseks.
  13. Kirjutage/salvestage faili sisu muutujas ch.
  14. Kasutage if condition ja eof() funktsiooni, st faili lõppu, tagamaks, et kompilaator jätkab faili lugemist, kui lõppu ei jõuta.
  15. Kasutage katkestuslauset, et lõpetada failist lugemine pärast lõppu.
  16. Printige konsoolile muutuja ch sisu.
  17. Aja lõpus keha.
  18. Muu lause põhiosa lõpp.
  19. Faili sulgemiseks helistage funktsioonile close().
  20. Programm peab pärast edukat lõpetamist tagastama väärtuse.
  21. Funktsiooni main() keha lõpp.

kokkuvõte

  • Failitöötlusega saab programmi väljundit saata ja faili salvestada.
  • Seejärel saab failis olevatele andmetele rakendada mitmeid toiminguid.
  • Voog on abstraktsioon, mis esindab seadet, kus sooritatakse sisend/väljundoperatsioone.
  • Voogu saab esitada määramata pikkusega märkide sihtkoha või allikana.
  • Fstream raamatukogu pakub C++ programmeerijad failitöötlusmeetoditega.
  • Teegi kasutamiseks peate selle oma programmi kaasama, kasutades käskkirja #include eelprotsessor.