file input output operations c
En studie om filinngangsoperasjonsoperasjoner og filpekerfunksjoner i C ++.
I sanntidsprogrammering håndterer vi store deler av data som ikke kan innkvarteres fra standard Input-Output-enheter. Derfor må vi bruke sekundær lagring for lagring av data. Ved hjelp av sekundær lagring lagrer vi vanligvis data i form av filer.
Vi kan lese data fra filer eller skrive data i filer ved å bruke en sekvens av data som kalles strømmer enten i tekst eller binært format. Det er forskjellige inngang / utgang og andre operasjoner relatert til filer i C ++. Denne opplæringen forklarer disse operasjonene knyttet til filer som bruker forskjellige klasser.
=> Besøk her for den eksklusive C ++ Training Tutorial Series.
Hva du vil lære:
Filinngangs- / utgangsklasser i C ++
Vi har sett en iostream-klasse i C ++ som definerer standard inngangs- og utgangsfunksjonalitet inkludert cin og cout. Denne klassen er begrenset til standardinngangs- og utdataenheter som henholdsvis tastatur og skjerm.
Når det gjelder filoperasjoner, har C ++ et annet sett med klasser som kan brukes.
Disse klassene er beskrevet som nedenfor:
- Ofstream: Filhåndteringsklasse som betyr utdatafilstrømmen og brukes til å skrive data til filer.
- Ifstream: Filhåndteringsklasse som betyr inngangsfilstrømmen og brukes til å lese data fra filen.
- Fstream: Filhåndteringsklasse som har evnen til å håndtere både ifstream og ofstream. Den kan brukes til å lese fra og skrive til en fil.
Følgende operasjoner støttes i C ++ File Handling:
- Åpne en fil
- Lukk en fil
- Les fra en fil
- Skriv til en fil
La oss se hver av disse operasjonene i detalj !!
Åpne en fil
Å knytte objektet til en av strømklassene til en fil enten for å lese eller skrive eller begge kalles å åpne en fil. En åpen fil er representert i kode ved å bruke dette strømobjektet. Dermed vil enhver lese / skrive-operasjon utført på dette strømobjektet også bli brukt på den fysiske filen.
Den generelle syntaksen for å åpne en fil med strømmen er:
void open(const char* filename, ios::open mode mode)
Her,
filnavn => Strengen som inneholder bane og navn på filen som skal åpnes.
modus => Valgfri parameter som indikerer modusen filen skal åpnes i.
C ++ støtter forskjellige moduser der filen kan åpnes. Vi kan også spesifisere en kombinasjon av disse modusene ved hjelp av OR-operatøren.
hva du skal bruke for å åpne xml-filer
Filmodus | Beskrivelse |
---|---|
ios :: i | Åpner filen i inndatamodus for lesing. |
ios :: ute | Åpner filen i utgangsmodus for å skrive data til filen. |
ios :: spiste | Still inn startposisjon på slutten av filen. Hvis slutten av filflagget ikke er angitt, blir startposisjonen satt til begynnelsen av filen. |
ios :: trunc | Hvis filen åpnes for skriving og allerede har innhold, blir innholdet avkortet. |
ios :: app | Åpner filen i tilleggsmodus slik at alt innhold legges til på slutten av filen. |
ios :: binær | Åpner fil i binær modus. |
For eksempel,hvis vi vil åpne en fil “myfile.dat” for å legge til data i binærmodus, kan vi skrive følgende kode.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Som allerede nevnt er modusparameteren valgfri. Når vi åpner en fil uten å spesifisere den andre parameteren, har en åpen medlemsfunksjon av ofstream, ifstream eller fstream en standardmodus å åpne filen med.
Disse er gitt som følger:
Klasse | Standardmodus |
---|---|
Ifstream | ios :: i |
ofstream | ios :: ute |
Fstream | ios :: inn | ios :: ut |
Så hvis vi ikke spesifiserer den andre parameteren i den åpne funksjonen, avhengig av hvilken strømklasse som brukes, åpnes filen med standardmodus.
Lukke en fil
Vi kan bruke lukkingsfunksjonen til å lukke en fil og frigjøre ressursene som filen har når vi er ferdige med inndata- og utdataoperasjonene på en fil.
Funksjon for å lukke en fil er:
void close()
Så når vi er ferdige med operasjonene på filen ovenfor, kan vi lukke filen som følger:
myfile.close();
Når filen er lukket ved hjelp av lukkingsfunksjonen, kan det tilknyttede filobjektet brukes på nytt til å åpne en annen fil.
core java intervju spørsmål for nybegynnere
Lesing fra en fil
Vi kan lese informasjonen fra en fil linje for linje ved hjelp av strømutvinningsoperatøren (>>). Dette ligner på å lese innganger fra standardinngangen ved hjelp av cin. Den eneste forskjellen er i tilfelle filer, vi bruker ifstream eller fstream objekt i stedet for cin.
Eksempelkode for lesing fra en fil er gitt nedenfor:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<I ovennevnte kode åpner vi en fil og bruker strømutvinningsoperatøren (>>), vi leser innholdet i filen. Når du er ferdig med å lese, kan vi lukke filen.
Skrive til en fil
Vi kan også skrive data til en fil ved hjelp av filoperasjonene. Operatøren vi bruker til å skrive data til en fil er en strøminnføringsoperatør (<<). 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.
La oss se på følgende eksempelkode:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Her leser vi en linje fra inngangen og skriver den til en fil som ble åpnet med ofstream-objektet.
I kodeeksemplet nedenfor gir vi en demonstrasjon av alle filhåndteringsoperasjonene.
#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; }
Produksjon:
Skriver til filen
Skriv inn navnet ditt: Ved
Skriv inn din alder: 7
Lese fra en fil
Av
7
I programmet ovenfor åpner vi først en fil i skrivemodus. Deretter leser vi data, dvs. navn og alder, og skriver dem til en fil. Vi lukker deretter denne filen. Deretter åpner vi den samme filen i lesemodus og leser data linje for linje fra filen og sender den ut til skjermen.
Dermed dekker dette programmet alle fil I / O-operasjoner.
File State Slags
Det er noen medlemsfunksjoner som brukes til å kontrollere tilstanden til filen. Alle disse funksjonene gir en boolsk verdi.
Vi har tabellert disse funksjonene som følger:
Funksjon Beskrivelse eof () Returnerer sant hvis slutten på filen er nådd mens du leser filen. mislykkes () Returnerer sant når lese / skrive-operasjonen mislykkes eller formatfeil oppstår dårlig () Returnerer sant hvis lesing fra eller skriving til en fil mislykkes. god() Returnerer falsk i de samme tilfellene der å ringe noen av de ovennevnte funksjonene ville være sant.
Få / putte og andre spesielle operasjoner
Filen I / O-strømmer som vi har sett så langt har en intern get og put-posisjoner som ligner på de andre I / O-strømmer som iostream.
Klassen ifstream har en intern get-posisjon som inneholder plasseringen av elementet / tegnet som skal leses i filen i neste inngangsoperasjon. Klassen ofstream har en intern putposisjon som inneholder plasseringen av elementet / tegnet som skal skrives i neste utgangsoperasjon.
Forresten har fstream både få og sette posisjoner.
For å gjøre det lettere å lese og skrive ved hjelp av disse posisjonene, har vi noen medlemsfunksjoner som brukes til å observere og endre disse posisjonene.
Disse funksjonene er listet opp nedenfor:
Funksjoner Beskrivelse tellg() Returnerer gjeldende posisjon for get pointer tellp () Returnerer gjeldende posisjon for putepekeren seekg (posisjon) Bevegelser får en peker til spesifisert stedstelling fra begynnelsen av filen seekg (forskyvning, retning) Bevegelser får en peker for å forskyve verdien i forhold til punktet gitt av parameterretning. søker (posisjon) Bevegelser setter en peker til spesifisert stedstelling fra begynnelsen av filen seekp (forskyvning, retning) Bevegelser setter en peker for å forskyve verdien i forhold til punktet gitt av parameterretning.
Parameteren retning gitt i ovennevnte funksjon prototyper er en oppregnet type type seekdir og det bestemmer punktet fra hvilket offset telles.
Den kan ha følgende verdier.
ios :: tigge Forskyvning fra begynnelsen av strømmen ios :: cur Offset fra gjeldende posisjon ios :: slutt Offset fra slutten av strømmen
La oss se et komplett eksempel som demonstrerer bruken av disse funksjonene.
#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'< Produksjon:
Ny fil opprettet
Opprinnelig filpekerposisjon ved: 34
Etter seekp (-1, ios :: cur), File Pointer Position ved: 33
Etter seekg (5, ios :: beg), File Pointer at: 5
Etter seekg (1, ios :: cur), File Pointer ved: 6
Som vist i programmet ovenfor har vi opprettet en fil der vi skriver en tekstlinje. Deretter viser vi forskjellige posisjoner for File Pointer ved å bruke de forskjellige funksjonene beskrevet ovenfor.
Konklusjon
I denne opplæringen har vi sett de forskjellige filoperasjonene for å åpne, lukke og lese / skrive data fra / til en fil.
Vi har også sett funksjonene for å endre filpekeren for å få tilgang til bestemte posisjoner i filen. I de påfølgende veiledningene vil vi diskutere noen flere viktige emner relatert til C ++.
hvordan spiller du mkv-filer
=> Les gjennom Easy C ++ Training Series.
Anbefalt lesing
- Grunnleggende inngangs- / utgangsoperasjoner i C ++
- Input-Output og filer i Python (Python Åpne, lese og skrive til fil)
- Grunnleggende I / U-operasjoner i Java (Input / Output Streams)
- Filmanipulering i Unix: Oversikt over Unix File System
- Unix spesialtegn eller metategn for filmanipulering
- Tillatelser for Unix-filtilgang: Unix Chmod, Chown og Chgrp
- VBScript-filobjekter: CopyFile, DeleteFile, OpenTextFile, Les og skriv tekstfil
- Java-distribusjon: Opprettelse og utføring av Java JAR-fil