C++ Bestandsbeheer: bestanden openen, schrijven, lezen en sluiten C++

Wat is bestandsverwerking? C++?

Bestanden slaan gegevens permanent op in een opslagapparaat. Met bestandsverwerking kan de uitvoer van een programma in een bestand worden opgeslagen. Verschillende bewerkingen kunnen op de gegevens worden uitgevoerd terwijl ze zich in het bestand bevinden.

Een stream is een abstractie van een apparaat waar invoer-/uitvoerbewerkingen worden uitgevoerd. U kunt een stream weergeven als een bestemming of een bron van tekens van onbepaalde lengte. Dit wordt bepaald door hun gebruik. C++ biedt u een bibliotheek met methoden voor bestandsverwerking. Laten we het bespreken.

De fstream-bibliotheek

De fstream-bibliotheek biedt C++ programmeurs met drie klassen voor het werken met bestanden. Deze klassen omvatten:

  • van stroom– Deze klasse vertegenwoordigt een uitvoerstroom. Het wordt gebruikt voor het maken van bestanden en het schrijven van informatie naar bestanden.
  • alsstroom– Deze klasse vertegenwoordigt een invoerstroom. Het wordt gebruikt voor het lezen van informatie uit gegevensbestanden.
  • fstroom– Deze klasse vertegenwoordigt doorgaans een bestandsstroom. Het wordt geleverd met ofstream/ifstream-mogelijkheden. Dit betekent dat het bestanden kan maken, naar bestanden kan schrijven en uit gegevensbestanden kan lezen.

De volgende afbeelding maakt het eenvoudig te begrijpen:

fstream bibliotheek
fstream bibliotheek

Om de bovenstaande klassen van de fstream-bibliotheek te gebruiken, moet u deze als headerbestand in uw programma opnemen. Uiteraard gebruikt u de #include preprocessor-richtlijn. U moet ook het iostream-headerbestand opnemen.

Hoe bestanden te openen

Voordat u een bewerking op een bestand uitvoert, moet u het eerst openen. Als u naar het bestand wilt schrijven, opent u het met fstream- of ofstream-objecten. Als u alleen uit het bestand wilt lezen, opent u het met het ifstream-object.

In de drie objecten, dat wil zeggen fstream, ofstream en ifstream, is de functie open() gedefinieerd. De functie heeft deze syntaxis:

open (file_name, mode);
  • De parameter file_name geeft de naam aan van het bestand dat moet worden geopend.
  • De modeparameter is optioneel. Deze kan een van de volgende waarden aannemen:
Waarde Beschrijving
ios:: app De toevoegmodus. De uitvoer die naar het bestand wordt verzonden, wordt eraan toegevoegd.
ios:: gegeten Het opent het bestand voor de uitvoer en verplaatst vervolgens de lees- en schrijfbesturing naar het einde van het bestand.
ios::in Het opent het bestand om te lezen.
ios::uit Het opent het bestand voor schrijven.
ios::trunc Als er een bestand bestaat, moeten de bestandselementen worden ingekort voordat het wordt geopend.

Het is mogelijk om twee modi tegelijk te gebruiken. Je combineert ze met de | (OR) operator.

Voorbeeld 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:

Bestanden openen

Hier is een screenshot van de code:

Bestanden openen

Code Verklaring:

  1. Neem het iostream-headerbestand op in het programma om de functies ervan te gebruiken.
  2. Neem het fstream-headerbestand op in het programma om de klassen ervan te gebruiken.
  3. Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
  4. Roep de functie main() aan. De programmalogica moet in de hoofdtekst ervan staan.
  5. Maak een object van de klasse fstream en geef het de naam my_file.
  6. Pas de functie open() toe op het bovenstaande object om een ​​nieuw bestand te maken. Met de out-modus kunnen we in het bestand schrijven.
  7. Gebruik de if-instructie om te controleren of het maken van bestanden is mislukt.
  8. Bericht dat op de console moet worden afgedrukt als het bestand niet is gemaakt.
  9. Einde van de hoofdtekst van de if-instructie.
  10. Gebruik een else-instructie om aan te geven wat er moet gebeuren als het bestand is gemaakt.
  11. Bericht dat op de console moet worden afgedrukt als het bestand is gemaakt.
  12. Pas de functie close() toe op het object om het bestand te sluiten.
  13. Einde van de hoofdtekst van de else-instructie.
  14. Het programma moet waarde retourneren als het met succes is voltooid.
  15. Einde van de hoofdtekst van de functie main().

Hoe bestanden te sluiten

Eens een C++ programma eindigt automatisch

  • spoelt de beken door
  • geeft het toegewezen geheugen vrij
  • sluit geopende bestanden.

Als programmeur moet u echter leren geopende bestanden te sluiten voordat het programma wordt beëindigd.

De fstream-, ofstream- en ifstream-objecten hebben de close()-functie voor het sluiten van bestanden. De functie heeft deze syntaxis:

void close();

Hoe naar bestanden te schrijven

U kunt rechtstreeks vanuit uw C++ programma. Hiervoor gebruikt u de stream insertion operator (<<). De tekst die naar het bestand moet worden geschreven, moet tussen dubbele aanhalingstekens worden geplaatst.

Laten we dit aantonen.

Voorbeeld 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:

Hoe naar bestanden te schrijven

Hier is een screenshot van de code:

Hoe naar bestanden te schrijven

Code Verklaring:

  1. Neem het iostream-headerbestand op in het programma om de functies ervan te gebruiken.
  2. Neem het fstream-headerbestand op in het programma om de klassen ervan te gebruiken.
  3. Neem de std-naamruimte op in het programma om de klassen ervan te gebruiken zonder deze aan te roepen.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Maak een instantie van de klasse fstream en geef deze de naam my_file.
  6. Gebruik de functie open() om een ​​nieuw bestand te maken met de naam my_file.txt. Het bestand wordt geopend in de uit-modus om erin te schrijven.
  7. Gebruik een if-statement om te controleren of het bestand niet is geopend.
  8. Tekst die op de console moet worden afgedrukt als het bestand niet is geopend.
  9. Einde van de hoofdtekst van de if-instructie.
  10. Gebruik een else-instructie om aan te geven wat er moet gebeuren als het bestand is gemaakt.
  11. Tekst die op de console moet worden afgedrukt als het bestand is gemaakt.
  12. Schrijf wat tekst naar het gemaakte bestand.
  13. Gebruik de close() functie om het bestand te sluiten.
  14. Einde van de hoofdtekst van de else-instructie.
  15. Het programma moet waarde retourneren na succesvolle voltooiing.
  16. Einde van de hoofdtekst van de functie main().

Hoe te lezen uit bestanden

U kunt informatie uit bestanden inlezen in uw C++ programma. Dit is mogelijk met behulp van de stream-extractie-operator (>>). U gebruikt de operator op dezelfde manier als u deze gebruikt om gebruikersinvoer van het toetsenbord te lezen. In plaats van het cin-object gebruikt u echter het ifstream/fstream-object.

Voorbeeld 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:

Lezen uit bestanden

Geen dergelijk bestand

Hier is een screenshot van de code:

Lezen uit bestanden

Code Verklaring:

  1. Neem het iostream-headerbestand op in het programma om de functies ervan te gebruiken.
  2. Neem het fstream-headerbestand op in het programma om de klassen ervan te gebruiken.
  3. Neem de std-naamruimte op in het programma om de klassen ervan te gebruiken zonder deze aan te roepen.
  4. Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
  5. Maak een instantie van de klasse fstream en geef deze de naam my_file.
  6. Gebruik de functie open() om een ​​nieuw bestand te maken met de naam my_file.txt. Het bestand wordt geopend in de in-modus om ervan te kunnen lezen.
  7. Gebruik een if-statement om te controleren of het bestand niet bestaat.
  8. Tekst die op de console moet worden afgedrukt als het bestand niet wordt gevonden.
  9. Einde van de hoofdtekst van de if-instructie.
  10. Gebruik een else-instructie om aan te geven wat er moet gebeuren als het bestand wordt gevonden.
  11. Maak een char variabele genaamd Ch.
  12. Maak een herhalingslus voor het herhalen van de bestandsinhoud.
  13. Schrijf/opslag de inhoud van het bestand in de variabele ch.
  14. Gebruik een if-voorwaarde en eof()-functie, dat wil zeggen het einde van het bestand, om ervoor te zorgen dat de compiler uit het bestand blijft lezen als het einde niet wordt bereikt.
  15. Gebruik een break-instructie om het lezen uit het bestand te stoppen zodra het einde is bereikt.
  16. Druk de inhoud van variabele ch af op de console.
  17. Einde van de tijd lichaam.
  18. Einde van de hoofdtekst van de else-instructie.
  19. Roep de functie close() aan om het bestand te sluiten.
  20. Het programma moet waarde retourneren na succesvolle voltooiing.
  21. Einde van de hoofdtekst van de functie main().

Samenvatting

  • Met bestandsverwerking kan de uitvoer van een programma worden verzonden en in een bestand worden opgeslagen.
  • Vervolgens kunnen er een aantal bewerkingen op de gegevens in het bestand worden toegepast.
  • Een stream is een abstractie die een apparaat vertegenwoordigt waarop invoer-/uitvoerbewerkingen worden uitgevoerd.
  • Een stroom kan worden weergegeven als bestemming of bron van tekens van onbepaalde lengte.
  • De fstream-bibliotheek biedt C++ programmeurs met methoden voor bestandsverwerking.
  • Om de bibliotheek te gebruiken, moet u deze in uw programma opnemen met behulp van de preprocessorrichtlijn #include.