C++ Filhåndtering: Hvordan åpne, skrive, lese, lukke filer C++

Hva er filhåndtering i C++?

Filer lagrer data permanent på en lagringsenhet. Med filhåndtering kan utdata fra et program lagres i en fil. Ulike operasjoner kan utføres på dataene mens de er i filen.

En strøm er en abstraksjon av en enhet der input/output-operasjoner utføres. Du kan representere en strøm som enten en destinasjon eller en kilde til tegn av ubestemt lengde. Dette vil avgjøres av bruken deres. C++ gir deg et bibliotek som kommer med metoder for filhåndtering. La oss diskutere det.

fstream-biblioteket

Fstream-biblioteket tilbyr C++ programmerere med tre klasser for å jobbe med filer. Disse klassene inkluderer:

  • av strømmen– Denne klassen representerer en utgangsstrøm. Den brukes til å lage filer og skrive informasjon til filer.
  • ifstream– Denne klassen representerer en inngangsstrøm. Den brukes til å lese informasjon fra datafiler.
  • fstream– Denne klassen representerer vanligvis en filstrøm. Den kommer med ofstream/ifstream-funksjoner. Dette betyr at den er i stand til å lage filer, skrive til filer, lese fra datafiler.

Følgende bilde gjør det enkelt å forstå:

fstream bibliotek
fstream bibliotek

For å bruke de ovennevnte klassene til fstream-biblioteket, må du inkludere det i programmet som en overskriftsfil. Selvfølgelig vil du bruke #include preprocessor-direktivet. Du må også inkludere iostream header-filen.

Hvordan åpne filer

Før du utfører noen operasjon på en fil, må du først åpne den. Hvis du trenger å skrive til filen, åpner du den med fstream- eller ofstream-objekter. Hvis du bare trenger å lese fra filen, åpner du den med ifstream-objektet.

De tre objektene, det vil si fstream, ofstream og ifstream, har funksjonen open() definert i seg. Funksjonen tar denne syntaksen:

open (file_name, mode);
  • Filnavn-parameteren angir navnet på filen som skal åpnes.
  • Modusparameteren er valgfri. Den kan ha en av følgende verdier:
Verdi Tekniske beskrivelser
ios:: app Tilføy-modus. Utdataene som sendes til filen, legges til den.
ios::ate Den åpner filen for utdata og flytter lese- og skrivekontrollen til filens slutt.
ios::in Den åpner filen for lesing.
ios::ut Den åpner filen for skriving.
ios::trunc Hvis en fil eksisterer, bør filelementene avkortes før den åpnes.

Det er mulig å bruke to moduser samtidig. Du kombinerer dem ved å bruke | (ELLER) operatør.

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

Utgang:

Åpne filer

Her er et skjermbilde av koden:

Åpne filer

Kodeforklaring:

  1. Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
  2. Inkluder fstream-headerfilen i programmet for å bruke klassene.
  3. Inkluder std-navneområdet i koden vår for å bruke klassene uten å kalle det.
  4. Kalle hoved()-funksjonen. Programlogikken bør gå inn i kroppen.
  5. Lag et objekt av fstream-klassen og gi det navnet min_fil.
  6. Bruk open()-funksjonen på objektet ovenfor for å lage en ny fil. Ut-modusen lar oss skrive inn i filen.
  7. Bruk if-setningen for å sjekke om filopprettingen mislyktes.
  8. Melding om å skrive ut på konsollen hvis filen ikke ble opprettet.
  9. Slutten av brødteksten til if-utsagn.
  10. Bruk en else-setning for å angi hva du skal gjøre hvis filen ble opprettet.
  11. Melding som skal skrives ut på konsollen hvis filen ble opprettet.
  12. Bruk close()-funksjonen på objektet for å lukke filen.
  13. Slutten av brødteksten til else-utsagnet.
  14. Programmet må returnere verdi hvis det fullføres.
  15. Slutten av hoved()-funksjonens hoveddel.

Hvordan lukke filer

En gang en C++ program avsluttes, det automatisk

  • skyller bekkene
  • frigjør det tildelte minnet
  • lukker åpne filer.

Men som programmerer bør du lære å lukke åpne filer før programmet avsluttes.

Objektene fstream, ofstream og ifstream har close()-funksjonen for å lukke filer. Funksjonen tar denne syntaksen:

void close();

Hvordan skrive til filer

Du kan skrive til filen rett fra din C++ program. Du bruker strøminnsettingsoperator (<<) for dette. Teksten som skal skrives til filen bør omsluttes av doble anførselstegn.

La oss demonstrere dette.

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

Utgang:

Hvordan skrive til filer

Her er et skjermbilde av koden:

Hvordan skrive til filer

Kodeforklaring:

  1. Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
  2. Inkluder fstream-headerfilen i programmet for å bruke klassene.
  3. Inkluder std-navneområdet i programmet for å bruke klassene uten å kalle det.
  4. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  5. Opprett en forekomst av fstream-klassen og gi den navnet my_file.
  6. Bruk open()-funksjonen for å lage en ny fil kalt min_fil.txt. Filen vil bli åpnet i ut-modus for å skrive inn i den.
  7. Bruk en if-setning for å sjekke om filen ikke er åpnet.
  8. Tekst som skal skrives ut på konsollen hvis filen ikke åpnes.
  9. Slutten av brødteksten til if-setningen.
  10. Bruk en else-setning for å angi hva du skal gjøre hvis filen ble opprettet.
  11. Tekst som skal skrives ut på konsollen hvis filen ble opprettet.
  12. Skriv litt tekst til den opprettede filen.
  13. Bruk close()-funksjonen for å lukke filen.
  14. Slutten av brødteksten til else-utsagnet.
  15. Programmet må returnere verdi ved vellykket gjennomføring.
  16. Slutten av hoveddelen av hoved()-funksjonen.

Hvordan lese fra filer

Du kan lese informasjon fra filer inn i din C++ program. Dette er mulig ved å bruke strømutvinningsoperatør (>>). Du bruker operatøren på samme måte som du bruker den til å lese brukerinndata fra tastaturet. Men i stedet for å bruke cin-objektet, bruker du ifstream/fstream-objektet.

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

Utgang:

Les fra filer

Ingen slik fil

Her er et skjermbilde av koden:

Les fra filer

Kodeforklaring:

  1. Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
  2. Inkluder fstream-headerfilen i programmet for å bruke klassene.
  3. Inkluder std-navneområdet i programmet for å bruke klassene uten å kalle det.
  4. Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
  5. Opprett en forekomst av fstream-klassen og gi den navnet my_file.
  6. Bruk open()-funksjonen for å lage en ny fil kalt min_fil.txt. Filen åpnes i in-modus for lesing fra den.
  7. Bruk en if-setning for å sjekke om filen ikke eksisterer.
  8. Tekst som skal skrives ut på konsollen hvis filen ikke blir funnet.
  9. Slutten av brødteksten til if-setningen.
  10. Bruk en else-setning for å angi hva du skal gjøre hvis filen blir funnet.
  11. Lag en char variabel kalt kap.
  12. Lag en mens løkken for å iterere over filinnholdet.
  13. Skriv/lagre innholdet i filen i variabelen kap.
  14. Bruk en if condition og eof() funksjon, det vil si slutten av filen, for å sikre at kompilatoren fortsetter å lese fra filen hvis slutten ikke nås.
  15. Bruk en break-setning for å slutte å lese fra filen når slutten er nådd.
  16. Skriv ut innholdet i variabel ch på konsollen.
  17. Slutten av mens kroppen.
  18. Slutten av brødteksten til else-utsagnet.
  19. Kall funksjonen close() for å lukke filen.
  20. Programmet må returnere verdi ved vellykket gjennomføring.
  21. Slutten av hoveddelen av hoved()-funksjonen.

Sammendrag

  • Med filhåndtering kan utdata fra et program sendes og lagres i en fil.
  • En rekke operasjoner kan deretter brukes på dataene mens de er i filen.
  • En strøm er en abstraksjon som representerer en enhet der input/output-operasjoner utføres.
  • En strøm kan representeres som enten destinasjon eller kilde til tegn av ubestemt lengde.
  • Fstream-biblioteket tilbyr C++ programmerere med metoder for filhåndtering.
  • For å bruke biblioteket må du inkludere det i programmet ditt ved å bruke #include preprocessor-direktivet.

Oppsummer dette innlegget med: