C++ Filhåndtering: Hvordan man åbner, skriver, læser, lukker filer ind C++
Hvad er filhåndtering i C++?
Filer gemmer data permanent på en lagerenhed. Med filhåndtering kan output fra et program gemmes i en fil. Forskellige handlinger kan udføres på dataene, mens de er i filen.
En strøm er en abstraktion af en enhed, hvor input/output-operationer udføres. Du kan repræsentere en strøm som enten en destination eller en kilde til tegn af ubestemt længde. Dette vil blive bestemt af deres brug. C++ giver dig et bibliotek, der kommer med metoder til filhåndtering. Lad os diskutere det.
fstream biblioteket
Fstream-biblioteket tilbyder C++ programmører med tre klasser til at arbejde med filer. Disse klasser omfatter:
- ofstream– Denne klasse repræsenterer en outputstrøm. Det bruges til at oprette filer og skrive information til filer.
- ifstream– Denne klasse repræsenterer en inputstrøm. Det bruges til at læse information fra datafiler.
- fstream– Denne klasse repræsenterer generelt en filstrøm. Den kommer med ofstream/ifstream-funktioner. Det betyder, at den er i stand til at oprette filer, skrive til filer, læse fra datafiler.
Følgende billede gør det nemt at forstå:
For at bruge ovenstående klasser af fstream-biblioteket, skal du inkludere det i dit program som en header-fil. Selvfølgelig vil du bruge #include preprocessor-direktivet. Du skal også inkludere iostream header-filen.
Sådan åbner du filer
Før du udfører nogen handling på en fil, skal du først åbne den. Hvis du har brug for at skrive til filen, skal du åbne den ved hjælp af fstream- eller ofstream-objekter. Hvis du kun skal læse fra filen, skal du åbne den ved hjælp af ifstream-objektet.
De tre objekter, det vil sige fstream, ofstream og ifstream, har funktionen open() defineret i dem. Funktionen tager denne syntaks:
open (file_name, mode);
- Parameteren file_name angiver navnet på den fil, der skal åbnes.
- Modeparameteren er valgfri. Det kan tage en af følgende værdier:
Værdi | Produktbeskrivelse |
---|---|
ios:: app | Tilføj tilstand. Det output, der sendes til filen, føjes til den. |
ios::at | Det åbner filen for output og flytter derefter læse- og skrivekontrollen til filens ende. |
ios::in | Det åbner filen til læsning. |
ios::ud | Det åbner filen for en skrivning. |
ios::trunc | Hvis der findes en fil, skal filelementerne afkortes før den åbnes. |
Det er muligt at bruge to tilstande på samme tid. Du kombinerer dem ved hjælp af | (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; }
Output:
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for at bruge dets funktioner.
- Inkluder fstream-headerfilen i programmet for at bruge dets klasser.
- Inkluder std-navneområdet i vores kode for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken bør gå ind i dens krop.
- Opret et objekt af fstream-klassen og giv det navnet my_file.
- Anvend funktionen open() på ovenstående objekt for at oprette en ny fil. Ud-tilstanden giver os mulighed for at skrive ind i filen.
- Brug if-sætning til at kontrollere, om filoprettelse mislykkedes.
- Besked om at udskrive på konsollen, hvis filen ikke blev oprettet.
- Slutningen af brødteksten af if-erklæring.
- Brug en else-sætning til at angive, hvad du skal gøre, hvis filen blev oprettet.
- Besked, der skal udskrives på konsollen, hvis filen blev oprettet.
- Anvend funktionen close() på objektet for at lukke filen.
- Slutningen af brødteksten i else-udsagnet.
- Programmet skal returnere værdi, hvis det fuldføres.
- Slutningen af hoved() funktionsteksten.
Sådan lukkes filer
Engang en C++ program afsluttes, det automatisk
- skyller vandløbene
- frigiver den tildelte hukommelse
- lukker åbnede filer.
Men som programmør bør du lære at lukke åbne filer, før programmet afsluttes.
Objekterne fstream, ofstream og ifstream har funktionen close() til at lukke filer. Funktionen tager denne syntaks:
void close();
Sådan skriver du til filer
Du kan skrive til fil direkte fra din C++ program. Du bruger stream insertion operator (<<) til dette. Teksten, der skal skrives til filen, skal være omgivet af dobbelte anførselstegn.
Lad os 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; }
Output:
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for at bruge dets funktioner.
- Inkluder fstream-headerfilen i programmet for at bruge dets klasser.
- Inkluder std-navneområdet i programmet for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken skal tilføjes i denne funktions brødtekst.
- Opret en forekomst af fstream-klassen og giv den navnet my_file.
- Brug funktionen open() til at oprette en ny fil med navnet my_file.txt. Filen vil blive åbnet i ud-tilstand for at skrive ind i den.
- Brug en if-sætning til at kontrollere, om filen ikke er blevet åbnet.
- Tekst til udskrivning på konsollen, hvis filen ikke åbnes.
- Slutningen af brødteksten i if-erklæringen.
- Brug en else-sætning til at angive, hvad du skal gøre, hvis filen blev oprettet.
- Tekst til udskrivning på konsollen, hvis filen blev oprettet.
- Skriv noget tekst til den oprettede fil.
- Brug funktionen close() til at lukke filen.
- Slutningen af brødteksten i else-udsagnet.
- Programmet skal returnere værdi efter vellykket afslutning.
- Slutningen af hoveddelen af funktionen main().
Sådan læser du fra filer
Du kan læse oplysninger fra filer ind i din C++ program. Dette er muligt ved at bruge strømudvindingsoperatøren (>>). Du bruger operatøren på samme måde, som du bruger den til at læse brugerinput fra tastaturet. Men i stedet for at bruge cin-objektet, bruger 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; }
Output:
Ingen sådan fil
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i programmet for at bruge dets funktioner.
- Inkluder fstream-headerfilen i programmet for at bruge dets klasser.
- Inkluder std-navneområdet i programmet for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken skal tilføjes i denne funktions brødtekst.
- Opret en forekomst af fstream-klassen og giv den navnet my_file.
- Brug funktionen open() til at oprette en ny fil med navnet my_file.txt. Filen vil blive åbnet i in-tilstand for læsning fra den.
- Brug en if-sætning til at kontrollere, om filen ikke eksisterer.
- Tekst til udskrivning på konsollen, hvis filen ikke findes.
- Slutningen af brødteksten i if-erklæringen.
- Brug en else-sætning til at angive, hvad du skal gøre, hvis filen findes.
- Opret en char variabel navngivet ch.
- Opret en mens løkke til iteration over filindholdet.
- Skriv/gem indholdet af filen i variablen kap.
- Brug en if condition og eof() funktion, dvs. slutningen af filen, for at sikre, at compileren bliver ved med at læse fra filen, hvis slutningen ikke nås.
- Brug en break-sætning til at stoppe med at læse fra filen, når slutningen er nået.
- Udskriv indholdet af variabel ch på konsollen.
- Slut på mens krop.
- Slutningen af brødteksten i else-udsagnet.
- Kald funktionen close() for at lukke filen.
- Programmet skal returnere værdi efter vellykket afslutning.
- Slutningen af hoveddelen af funktionen main().
Resumé
- Med filhåndtering kan output fra et program sendes og gemmes i en fil.
- En række operationer kan derefter anvendes på dataene, mens de er i filen.
- En strøm er en abstraktion, der repræsenterer en enhed, hvor input/output-operationer udføres.
- En strøm kan repræsenteres som enten destination eller kilde til tegn af ubestemt længde.
- Fstream-biblioteket tilbyder C++ programmører med metoder til filhåndtering.
- For at bruge biblioteket skal du inkludere det i dit program ved hjælp af #include preprocessor-direktivet.