file input output operations c
En undersøgelse af filinput-outputfunktioner og filmarkørfunktioner i C ++.
I realtidsprogrammering beskæftiger vi os med store stykker data, der ikke kan imødekommes fra standard Input-Output-enheder. Derfor er vi nødt til at gøre brug af sekundær lagring til lagring af data. Ved hjælp af sekundær lagring gemmer vi normalt data i form af filer.
Vi kan læse data fra filer eller skrive data i filer ved hjælp af en sekvens af data kaldet streams enten i tekst eller binært format. Der er forskellige input / output og andre handlinger relateret til filer i C ++. Denne vejledning forklarer disse operationer relateret til filer, der bruger forskellige klasser.
=> Besøg her for den eksklusive C ++ træningsvejledningsserie.
Hvad du lærer:
Filinput / outputklasser i C ++
Vi har set en iostream-klasse i C ++, der definerer standard input- og outputfunktionalitet inklusive cin og cout. Denne klasse er begrænset til standardinput- og outputenheder som henholdsvis tastatur og skærm.
Når det kommer til filhandlinger, har C ++ et andet sæt klasser, der kan bruges.
Disse klasser er beskrevet som nedenfor:
- Ofstream: Filhåndteringsklasse, der betegner outputfilstrømmen og bruges til at skrive data til filer.
- Ifstream: Filhåndteringsklasse, der angiver inputfilstrømmen og bruges til at læse data fra filen.
- Fstream: Filhåndteringsklasse, der har evnen til at håndtere både ifstream og ofstream. Det kan bruges til at læse fra og skrive til en fil.
Følgende handlinger understøttes i C ++ File Handling:
- Åbn en fil
- Luk en fil
- Læs fra en fil
- Skriv til en fil
Lad os se hver af disse operationer i detaljer !!
Åbn en fil
At knytte objektet til en af streamklasserne til en fil enten til læsning eller skrivning eller begge kaldes åbning af en fil. En åben fil er repræsenteret i kode ved hjælp af dette stream-objekt. Således vil enhver læsning / skrivning, der udføres på dette stream-objekt, også blive anvendt på den fysiske fil.
Den generelle syntaks for at åbne en fil med streamen er:
void open(const char* filename, ios::open mode mode)
Her,
filnavn => Strengen, der indeholder stien og navnet på den fil, der skal åbnes.
mode => Valgfri parameter, der angiver den tilstand, hvor filen skal åbnes.
C ++ understøtter forskellige tilstande, hvor filen kan åbnes. Vi kan også specificere en kombination af disse tilstande ved hjælp af OR-operatøren.
hvad er den bedste gratis computerrenser?
Filtilstand | Beskrivelse |
---|---|
ios :: i | Åbner filen i inputtilstand til læsning. |
ios :: ud | Åbner filen i outputtilstand til skrivning af data til fil. |
ios :: spiste | Indstil startposition i slutningen af filen. Hvis slutningen af filmarkeringen ikke er indstillet, indstilles startpositionen til begyndelsen af filen. |
ios :: trunc | Hvis filen åbnes til skrivning og allerede har indhold, afkortes indholdet. |
ios :: app | Åbner filen i tilføjelsestilstand, så alt indhold tilføjes i slutningen af filen. |
ios :: binær | Åbner fil i binær tilstand. |
For eksempel,hvis vi vil åbne en fil “myfile.dat” til tilføjelse af data i binær tilstand, så kan vi skrive følgende kode.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Som allerede nævnt er tilstandsparameteren valgfri. Når vi åbner en fil uden at angive den anden parameter, har en åben medlemsfunktion ofstream, ifstream eller fstream en standardtilstand at åbne filen med.
Disse gives som følger:
Klasse | Standardtilstand |
---|---|
Ifstream | ios :: i |
ofstream | ios :: ud |
Fstream | ios :: ind | ios :: ud |
Så hvis vi ikke specificerer den anden parameter i den åbne funktion afhængigt af den anvendte streamklasse, åbnes filen med standardtilstand.
Lukning af en fil
Vi kan bruge lukkefunktionen til at lukke en fil og frigøre de ressourcer, som filen har, når vi er færdige med input- og outputhandlingerne på en fil.
Funktion til at lukke en fil er:
void close()
Så når vi er færdige med operationerne på ovenstående fil myfile, kan vi lukke filen som følger:
myfile.close();
Når filen lukkes ved hjælp af lukningsfunktionen, kan det tilknyttede filobjekt genbruges til at åbne en anden fil.
Læsning fra en fil
Vi kan læse informationen fra en fil linje for linje ved hjælp af stream-ekstraktionsoperatøren (>>). Dette svarer til læsning af input fra standardinput ved hjælp af cin. Den eneste forskel er i tilfælde af filer, vi bruger ifstream eller fstream objekt i stedet for cin.
hvad kan afspille .swf filer
Eksempelkode til læsning fra en fil er angivet nedenfor:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<I ovenstående kode åbner vi en fil og bruger stream-ekstraktionsoperatøren (>>), vi læser indholdet af filen. Når vi er færdige med læsning, kan vi lukke filen.
Skrivning til en fil
Vi kan også skrive data til en fil ved hjælp af filhandlingerne. Den operatør, vi bruger til at skrive data til en fil, er en strømindsættelsesoperator (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Lad os overveje følgende eksempelkode:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Her læser vi en linje fra input og skriver den til en fil, der blev åbnet med ofstream-objektet.
I nedenstående kodeeksempel giver vi en demonstration af alle filhåndteringshandlinger.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Produktion:
Skrivning til filen
Indtast dit navn: Ved
Indtast din alder: 7
Læsning fra en fil
Ved
7
I ovenstående program åbner vi først en fil i skrivetilstand. Derefter læser vi data, dvs. navn og alder, og skriver dem til en fil. Vi lukker derefter denne fil. Dernæst åbner vi den samme fil i læsetilstanden og læser dataene linje for linje fra filen og sender den til skærmen.
Således dækker dette program alle fil I / O-operationer.
File State Slags
Der er nogle medlemsfunktioner, der bruges til at kontrollere filens tilstand. Alle disse funktioner returnerer en boolsk værdi.
Vi har tabelformeret disse funktioner som følger:
bedste harddisk datagendannelsestjeneste
Fungere Beskrivelse eof () Returnerer sandt, hvis slutningen af filen nås, mens du læser filen. svigte() Returnerer sandt, når læse- / skrivehandling mislykkes, eller der opstår formatfejl dårlig () Returnerer sandt, hvis læsning fra eller skrivning til en fil mislykkes. godt() Returnerer falsk i de samme tilfælde, hvor opkald til en af ovenstående funktioner ville være sandt.
Få / sæt og andre særlige operationer
Filens I / O-streams, som vi hidtil har set, har en intern get og put-positioner svarende til de andre I / O-streams som iostream.
Klassen ifstream har en intern get-position, der indeholder placeringen af det element / tegn, der skal læses i filen i den næste inputhandling. Klassen ofstream har en intern putposition, der indeholder placeringen af det element / tegn, der skal skrives i den næste outputoperation.
I øvrigt har fstream både få og sætte positioner.
For at lette læsning og skrivning ved hjælp af disse positioner har vi et par medlemsfunktioner, der bruges til at observere og ændre disse positioner.
Disse funktioner er anført nedenfor:
Funktioner Beskrivelse tellg () Returnerer den aktuelle position for få pointer tellp () Returnerer den aktuelle position for put-markøren seekg (position) Bevægelser får en markør til specificeret placeringstælling fra begyndelsen af filen seekg (offset, retning) Bevægelser får en markør til forskydning af værdi i forhold til det punkt, der er angivet ved parameterretning. søgning (position) Bevægelser sætter en markør til den angivne placeringstælling fra begyndelsen af filen seekp (offset, retning) Bevægelser placerer en markør til forskydning af værdi i forhold til det punkt, der er angivet ved parameterretning.
Parameteren retning angivet i ovenstående funktion er prototyper en opregnet type type seekdir og det bestemmer det punkt, hvorfra offset tælles.
Det kan have følgende værdier.
ios :: tigge Forskydning fra streamens begyndelse ios :: cur Forskydning fra den aktuelle position ios :: slut Forskudt fra slutningen af strømmen
Lad os se et komplet eksempel, der demonstrerer brugen af disse funktioner.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Produktion:
Ny fil oprettet
Indledende filmarkørposition ved: 34
Efter seekp (-1, ios :: cur), File Pointer Position ved: 33
Efter seekg (5, ios :: beg), filmarkør ved: 5
Efter seekg (1, ios :: cur), File Pointer ved: 6
Som vist i ovenstående program har vi oprettet en fil, hvor vi skriver en tekstlinje. Derefter viser vi forskellige positioner for filmarkøren ved hjælp af de forskellige funktioner beskrevet ovenfor.
Konklusion
I denne vejledning har vi set de forskellige filhandlinger for at åbne, lukke og læse / skrive data fra / til en fil.
Vi har også set funktionerne til at ændre filmarkøren for at få adgang til specifikke positioner i filen. I vores efterfølgende tutorials vil vi diskutere et par flere vigtige emner relateret til C ++.
=> Læs gennem Easy C ++ træningsserien.
Anbefalet læsning
- Grundlæggende input / output-operationer i C ++
- Input-output og filer i Python (Python åben, læse og skrive til fil)
- Grundlæggende I / O-operationer i Java (input / output-streams)
- Filmanipulation i Unix: Oversigt over Unix File System
- Unix specialtegn eller metategn til filmanipulation
- Tilladelser til Unix-filadgang: Unix Chmod, Chown og Chgrp
- VBScript-filobjekter: CopyFile, DeleteFile, OpenTextFile, Læs og skriv tekstfil
- Java-implementering: Oprettelse og udførelse af Java JAR-fil