C++ Gestionarea fișierelor: cum să deschideți, să scrieți, să citiți și să închideți fișierele în C++

În ce constă gestionarea fișierelor C++?

Fișierele stochează datele în mod permanent într-un dispozitiv de stocare. Cu gestionarea fișierelor, rezultatul dintr-un program poate fi stocat într-un fișier. Pot fi efectuate diferite operații asupra datelor în timp ce se află în fișier.

Un flux este o abstractizare a unui dispozitiv în care sunt efectuate operațiuni de intrare/ieșire. Puteți reprezenta un flux fie ca destinație, fie ca sursă de caractere de lungime nedefinită. Acest lucru va fi determinat de utilizarea lor. C++ vă oferă o bibliotecă care vine cu metode de gestionare a fișierelor. Hai să discutăm.

Biblioteca fstream

Biblioteca fstream oferă C++ programatori cu trei clase pentru lucrul cu fișiere. Aceste clase includ:

  • ofstream– Această clasă reprezintă un flux de ieșire. Este folosit pentru a crea fișiere și a scrie informații în fișiere.
  • ifstream– Această clasă reprezintă un flux de intrare. Este folosit pentru citirea informațiilor din fișierele de date.
  • fstream– Această clasă reprezintă în general un flux de fișiere. Vine cu capabilități ofstream/ifstream. Aceasta înseamnă că este capabil să creeze fișiere, să scrie în fișiere, să citească din fișiere de date.

Următoarea imagine face ușor de înțeles:

biblioteca fstream
biblioteca fstream

Pentru a utiliza clasele de mai sus ale bibliotecii fstream, trebuie să o includeți în programul dvs. ca fișier antet. Desigur, veți folosi directiva #include preprocesor. De asemenea, trebuie să includeți fișierul antet iostream.

Cum să deschideți fișiere

Înainte de a efectua orice operație asupra unui fișier, trebuie mai întâi să îl deschideți. Dacă trebuie să scrieți în fișier, deschideți-l folosind obiecte fstream sau ofstream. Dacă trebuie doar să citiți din fișier, deschideți-l folosind obiectul ifstream.

Cele trei obiecte, adică fstream, ofstream și ifstream, au funcția open() definită în ele. Funcția ia această sintaxă:

open (file_name, mode);
  • Parametrul file_name indică numele fișierului de deschis.
  • Parametrul mod este opțional. Poate lua oricare dintre următoarele valori:
Valoare Descriere
ios:: aplicația Modul Adăugare. Ieșirea trimisă la fișier este atașată acestuia.
ios::ate Deschide fișierul pentru ieșire, apoi mută controlul de citire și scriere la sfârșitul fișierului.
ios::in Deschide fișierul pentru citire.
ios::out Deschide fișierul pentru scriere.
ios::trunc Dacă un fișier există, elementele fișierului trebuie trunchiate înainte de deschiderea acestuia.

Este posibil să utilizați două moduri în același timp. Le combinați folosind | operator (SAU).

Exemplu 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;
}

ieșire:

Deschideți fișierele

Iată o captură de ecran a codului:

Deschideți fișierele

Explicația codului:

  1. Includeți fișierul antet iostream în program pentru a utiliza funcțiile acestuia.
  2. Includeți fișierul antet fstream în program pentru a-i folosi clasele.
  3. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  4. Apelați funcția main(). Logica programului ar trebui să intre în corpul său.
  5. Creați un obiect din clasa fstream și dați-i numele my_file.
  6. Aplicați funcția open() pe obiectul de mai sus pentru a crea un fișier nou. Modul out ne permite să scriem în fișier.
  7. Utilizați instrucțiunea if pentru a verifica dacă crearea fișierului a eșuat.
  8. Mesaj de imprimat pe consolă dacă fișierul nu a fost creat.
  9. Sfârșitul corpului declarației if.
  10. Utilizați o instrucțiune else pentru a indica ce trebuie să faceți dacă fișierul a fost creat.
  11. Mesaj de imprimat pe consolă dacă fișierul a fost creat.
  12. Aplicați funcția close() pe obiect pentru a închide fișierul.
  13. Sfârșitul corpului declarației else.
  14. Programul trebuie să returneze valoare dacă se finalizează cu succes.
  15. Sfârșitul corpului funcției main().

Cum să închideți fișierele

Odata C++ program se termină automat

  • spăla pâraiele
  • eliberează memoria alocată
  • închide fișierele deschise.

Cu toate acestea, ca programator, ar trebui să învățați să închideți fișierele deschise înainte ca programul să se încheie.

Obiectele fstream, ofstream și ifstream au funcția close() pentru închiderea fișierelor. Funcția ia această sintaxă:

void close();

Cum să scrieți în fișiere

Puteți scrie în fișier direct de la dvs C++ program. Utilizați operatorul de inserare a fluxului (<<) pentru aceasta. Textul care urmează să fie scris în fișier trebuie inclus între ghilimele duble.

Să demonstrăm asta.

Exemplu 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;
}

ieșire:

Cum să scrieți în fișiere

Iată o captură de ecran a codului:

Cum să scrieți în fișiere

Explicația codului:

  1. Includeți fișierul antet iostream în program pentru a utiliza funcțiile acestuia.
  2. Includeți fișierul antet fstream în program pentru a-i folosi clasele.
  3. Includeți spațiul de nume std în program pentru a-și folosi clasele fără a-l apela.
  4. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  5. Creați o instanță a clasei fstream și dați-i numele my_file.
  6. Utilizați funcția open() pentru a crea un fișier nou numit my_file.txt. Fișierul va fi deschis în modul out pentru a fi scris în el.
  7. Utilizați o instrucțiune if pentru a verifica dacă fișierul nu a fost deschis.
  8. Text de tipărit pe consolă dacă fișierul nu este deschis.
  9. Sfârșitul corpului declarației if.
  10. Utilizați o instrucțiune else pentru a indica ce trebuie să faceți dacă fișierul a fost creat.
  11. Text de tipărit pe consolă dacă fișierul a fost creat.
  12. Scrieți ceva text în fișierul creat.
  13. Utilizați funcția close() pentru a închide fișierul.
  14. Sfârșitul corpului declarației else.
  15. Programul trebuie să returneze valoare după finalizarea cu succes.
  16. Sfârșitul corpului funcției main().

Cum să citiți din fișiere

Puteți citi informații din fișiere în dvs C++ program. Acest lucru este posibil folosind operatorul de extragere a fluxului (>>). Utilizați operatorul în același mod în care îl utilizați pentru a citi introducerea utilizatorului de la tastatură. Cu toate acestea, în loc să utilizați obiectul cin, utilizați obiectul ifstream/fstream.

Exemplu 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;
}

ieșire:

Citiți din fișiere

Nu exista asemenea fisier

Iată o captură de ecran a codului:

Citiți din fișiere

Explicația codului:

  1. Includeți fișierul antet iostream în program pentru a utiliza funcțiile acestuia.
  2. Includeți fișierul antet fstream în program pentru a-i folosi clasele.
  3. Includeți spațiul de nume std în program pentru a-și folosi clasele fără a-l apela.
  4. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  5. Creați o instanță a clasei fstream și dați-i numele my_file.
  6. Utilizați funcția open() pentru a crea un fișier nou numit my_file.txt. Fișierul va fi deschis în modul in pentru citire din el.
  7. Utilizați o instrucțiune if pentru a verifica dacă fișierul nu există.
  8. Text de tipărit pe consolă dacă fișierul nu este găsit.
  9. Sfârșitul corpului declarației if.
  10. Utilizați o declarație else pentru a indica ce trebuie să faceți dacă fișierul este găsit.
  11. Crearea unei variabila char numit ch.
  12. Crearea unei în timp ce bucla pentru iterarea conținutului fișierului.
  13. Scrieți/stochează conținutul fișierului în variabila ch.
  14. Utilizați o condiție if și o funcție eof(), adică sfârșitul fișierului, pentru a vă asigura că compilatorul continuă să citească din fișier dacă nu se ajunge la sfârșit.
  15. Utilizați o instrucțiune break pentru a opri citirea din fișier odată ce se ajunge la sfârșit.
  16. Tipăriți conținutul variabilei ch pe consolă.
  17. Sfârșitul timpului corpului.
  18. Sfârșitul corpului declarației else.
  19. Apelați funcția close() pentru a închide fișierul.
  20. Programul trebuie să returneze valoare după finalizarea cu succes.
  21. Sfârșitul corpului funcției main().

Rezumat

  • Cu gestionarea fișierelor, rezultatul unui program poate fi trimis și stocat într-un fișier.
  • Un număr de operații pot fi apoi aplicate datelor în timp ce se află în fișier.
  • Un flux este o abstractizare care reprezintă un dispozitiv în care sunt efectuate operațiuni de intrare/ieșire.
  • Un flux poate fi reprezentat fie ca destinație, fie ca sursă de caractere de lungime nedefinită.
  • Biblioteca fstream oferă C++ programatori cu metode de manipulare a fișierelor.
  • Pentru a utiliza biblioteca, trebuie să o includeți în program folosind directiva #include preprocesor.