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

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:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
- Inkluder fstream-headerfilen i programmet for å bruke klassene.
- Inkluder std-navneområdet i koden vår for å bruke klassene uten å kalle det.
- Kalle hoved()-funksjonen. Programlogikken bør gå inn i kroppen.
- Lag et objekt av fstream-klassen og gi det navnet min_fil.
- Bruk open()-funksjonen på objektet ovenfor for å lage en ny fil. Ut-modusen lar oss skrive inn i filen.
- Bruk if-setningen for å sjekke om filopprettingen mislyktes.
- Melding om å skrive ut på konsollen hvis filen ikke ble opprettet.
- Slutten av brødteksten til if-utsagn.
- Bruk en else-setning for å angi hva du skal gjøre hvis filen ble opprettet.
- Melding som skal skrives ut på konsollen hvis filen ble opprettet.
- Bruk close()-funksjonen på objektet for å lukke filen.
- Slutten av brødteksten til else-utsagnet.
- Programmet må returnere verdi hvis det fullføres.
- 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:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
- Inkluder fstream-headerfilen i programmet for å bruke klassene.
- Inkluder std-navneområdet i programmet for å bruke klassene uten å kalle det.
- Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
- Opprett en forekomst av fstream-klassen og gi den navnet my_file.
- Bruk open()-funksjonen for å lage en ny fil kalt min_fil.txt. Filen vil bli åpnet i ut-modus for å skrive inn i den.
- Bruk en if-setning for å sjekke om filen ikke er åpnet.
- Tekst som skal skrives ut på konsollen hvis filen ikke åpnes.
- Slutten av brødteksten til if-setningen.
- Bruk en else-setning for å angi hva du skal gjøre hvis filen ble opprettet.
- Tekst som skal skrives ut på konsollen hvis filen ble opprettet.
- Skriv litt tekst til den opprettede filen.
- Bruk close()-funksjonen for å lukke filen.
- Slutten av brødteksten til else-utsagnet.
- Programmet må returnere verdi ved vellykket gjennomføring.
- 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:
Ingen slik fil
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for å bruke funksjonene.
- Inkluder fstream-headerfilen i programmet for å bruke klassene.
- Inkluder std-navneområdet i programmet for å bruke klassene uten å kalle det.
- Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
- Opprett en forekomst av fstream-klassen og gi den navnet my_file.
- Bruk open()-funksjonen for å lage en ny fil kalt min_fil.txt. Filen åpnes i in-modus for lesing fra den.
- Bruk en if-setning for å sjekke om filen ikke eksisterer.
- Tekst som skal skrives ut på konsollen hvis filen ikke blir funnet.
- Slutten av brødteksten til if-setningen.
- Bruk en else-setning for å angi hva du skal gjøre hvis filen blir funnet.
- Lag en char variabel kalt kap.
- Lag en mens løkken for å iterere over filinnholdet.
- Skriv/lagre innholdet i filen i variabelen kap.
- 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.
- Bruk en break-setning for å slutte å lese fra filen når slutten er nådd.
- Skriv ut innholdet i variabel ch på konsollen.
- Slutten av mens kroppen.
- Slutten av brødteksten til else-utsagnet.
- Kall funksjonen close() for å lukke filen.
- Programmet må returnere verdi ved vellykket gjennomføring.
- 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.



