file input output operations c
En studie om filinmatningsfunktioner och filpekarfunktioner i C ++.
I realtidsprogrammering hanterar vi stora bitar av data som inte kan rymmas från standardinmatningsutmatningsenheter. Därför måste vi använda sekundär lagring för lagring av data. Med sekundär lagring lagrar vi vanligtvis data i form av filer.
Vi kan läsa data från filer eller skriva data i filer genom att använda en sekvens av data som kallas strömmar antingen i text eller binärt format. Det finns olika in- / utdata och andra funktioner relaterade till filer i C ++. Denna handledning förklarar dessa åtgärder relaterade till filer som använder olika klasser.
=> Besök här för den exklusiva C ++ Training Tutorial Series.
Vad du kommer att lära dig:
Filinmatnings- / utmatningsklasser i C ++
Vi har sett en iostream-klass i C ++ som definierar standardinmatnings- och utgångsfunktionaliteten inklusive cin och cout. Denna klass är begränsad till standardinmatnings- och utmatningsenheter som tangentbord respektive bildskärm.
När det gäller filoperationer har C ++ en annan uppsättning klasser som kan användas.
Dessa klasser beskrivs som nedan:
- Ofstream: Filhanteringsklass som betyder utdatafilströmmen och används för att skriva data till filer.
- Ifstream: Filhanteringsklass som anger ingångsfilströmmen och används för att läsa data från filen.
- Fstream: Filhanteringsklass som har förmågan att hantera både ifstream och ofstream. Den kan användas för att läsa från och skriva till en fil.
Följande åtgärder stöds i C ++ File Handling:
- Öppna en fil
- Stäng en fil
- Läs från en fil
- Skriv till en fil
Låt oss se var och en av dessa operationer i detalj !!
Öppna en fil
Att associera objekt för en av strömklasserna till en fil antingen för läsning eller skrivning eller båda kallas att öppna en fil. En öppen fil representeras i kod genom att använda detta strömobjekt. Således kommer alla läs- / skrivåtgärder som utförs på detta strömobjekt att tillämpas på den fysiska filen också.
Den allmänna syntaxen för att öppna en fil med strömmen är:
void open(const char* filename, ios::open mode mode)
Här,
filnamn => Strängen som innehåller sökvägen och namnet på filen som ska öppnas.
mode => Valfri parameter som anger vilket läge filen ska öppnas i.
C ++ stöder olika lägen där filen kan öppnas. Vi kan också ange en kombination av dessa lägen med OR-operatören.
vad man ska använda för att öppna xml-filer
Filläge | Beskrivning |
---|---|
ios :: in | Öppnar filen i inmatningsläge för läsning. |
ios :: ut | Öppnar filen i utmatningsläge för att skriva data till filen. |
ios :: åt | Ställ in initialposition i slutet av filen. Om slutet på filflaggan inte är inställd, är startpositionen inställd på början av filen. |
ios :: trunc | Om filen öppnas för skrivning och redan har innehåll trunkeras innehållet. |
ios :: app | Öppnar filen i append-läge så att allt innehåll läggs till i slutet av filen. |
ios :: binärt | Öppnar fil i binärt läge. |
Till exempel,om vi vill öppna en fil “myfile.dat” för att lägga till data i binärt läge kan vi skriva följande kod.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Som redan nämnts är lägesparametern valfri. När vi öppnar en fil utan att specificera den andra parametern har en öppen medlemsfunktion av ofstream, ifstream eller fstream ett standardläge att öppna filen med.
Dessa ges enligt följande:
Klass | Standardläge |
---|---|
Ifstream | ios :: in |
ofstream | ios :: ut |
Fstream | ios :: in | ios :: ut |
Så om vi inte anger den andra parametern i den öppna funktionen, beroende på vilken strömklass som används, öppnas filen med standardläget.
Stänga en fil
Vi kan använda stängningsfunktionen för att stänga en fil och släppa resurserna i filen när vi är klara med in- och utmatningsoperationerna på en fil.
Funktion för att stänga en fil är:
void close()
Så när vi är klara med operationerna på ovanstående fil, kan vi stänga filen på följande sätt:
myfile.close();
När filen stängs med hjälp av stängningsfunktionen kan det associerade filobjektet användas på nytt för att öppna en annan fil.
Läser från en fil
Vi kan läsa informationen från en fil rad för rad med hjälp av strömuttagsoperatören (>>). Detta liknar läsingången från standardingången med cin. Den enda skillnaden är när det gäller filer, vi använder ifstream eller fstream-objekt istället för cin.
Exempelkod för läsning från en fil ges nedan:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<I ovanstående kod öppnar vi en fil och använder strömuttagsoperatören (>>), vi läser innehållet i filen. När vi väl har läst kan vi stänga filen.
typ av fel i programvarutestning
Skriva till en fil
Vi kan också skriva data till en fil med hjälp av filåtgärderna. Operatören som vi använder för att skriva data till en fil är en operatör för insättning av ström (<<). 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.
Låt oss överväga följande exempelkod:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Här läser vi en rad från ingången och skriver den till en fil som öppnades med ofstream-objektet.
I kodexemplet nedan ger vi en demonstration av alla filhanteringsåtgärder.
#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:
Skriva till filen
Ange ditt namn: Ved
Ange din ålder: 7
Läser från en fil
Förbi
7
I ovanstående program öppnar vi först en fil i skrivläget. Sedan läser vi data, dvs namn och ålder och skriver dem till en fil. Vi stänger sedan den här filen. Därefter öppnar vi samma fil i läsläget och läser datan rad för rad från filen och skickar den till skärmen.
Således täcker detta program alla fil-I / O-operationer.
File State Slags
Det finns några medlemsfunktioner som används för att kontrollera filens tillstånd. Alla dessa funktioner returnerar ett booleskt värde.
Vi har tabelliserat dessa funktioner enligt följande:
Fungera Beskrivning eof () Returnerar sant om slutet på filen uppnås när du läser filen. misslyckas() Returnerar true när läs- / skrivoperationen misslyckas eller formatfel uppstår dålig() Returnerar true om det inte går att läsa från eller skriva till en fil. Bra() Returnerar falskt i samma fall där anrop till någon av ovanstående funktioner skulle återgå till sant.
Få / sätt och andra specialoperationer
Filens I / O-strömmar som vi hittills har sett har en intern get och put-positioner som liknar de andra I / O-strömmarna som iostream.
Klassen ifstream har en intern get-position som innehåller platsen för elementet / tecknet som ska läsas i filen i nästa inmatningsoperation. Klassen ofstream har en intern put-position som innehåller platsen för elementet / tecknet som ska skrivas i nästa utmatningsoperation.
För övrigt har fstream både get och put positioner.
För att underlätta läsning och skrivning med dessa positioner har vi några medlemsfunktioner som används för att observera och ändra dessa positioner.
grundläggande felsökningsfrågor som ställts i intervjun
Dessa funktioner listas nedan:
Funktioner Beskrivning tellg () Returnerar aktuell position för get-pekaren tellp () Returnerar aktuell position för putspekaren seekg (position) Flyttar får en pekare till specificerad platsräkning från början av filen seekg (offset, direction) Rörelser får en pekare för att kompensera värdet i förhållande till den punkt som ges av parameterriktningen. sökande (position) Flyttar placerar en pekare till specificerad platsräkning från början av filen seekp (offset, direction) Rörelser sätter en pekare för att kompensera värdet i förhållande till den punkt som ges av parameterriktningen.
Parametern riktning anges i ovanstående funktion prototyper är en räknas upp typ av typ seekdir och den bestämmer den punkt från vilken offset räknas.
Det kan ha följande värden.
ios :: tigga Offset från början av strömmen ios :: cur Förskjutning från aktuell position ios :: slut Offset från slutet av strömmen
Låt oss se ett fullständigt exempel som visar användningen av dessa 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 skapad
Initial filpekarposition vid: 34
Efter seekp (-1, ios :: cur), File Pointer Position vid: 33
Efter seekg (5, ios :: beg), File Pointer vid: 5
Efter seekg (1, ios :: cur), File Pointer vid: 6

Som visas i ovanstående program har vi skapat en fil där vi skriver en textrad. Sedan använder vi de olika funktionerna som beskrivs ovan, vi visar olika positioner för File Pointer.
Slutsats
I denna handledning har vi sett de olika filåtgärderna för att öppna, stänga och läsa / skriva data från / till en fil.
Vi har också sett funktionerna för att ändra filpekaren för att komma åt specifika positioner i filen. I våra efterföljande handledning kommer vi att diskutera några fler viktiga ämnen relaterade till C ++.
=> Läs igenom Easy C ++ Training Series.
Rekommenderad läsning
- Grundläggande in- / utmatningsfunktioner i C ++
- Input-Output och filer i Python (Python Öppna, läs och skriv till fil)
- Grundläggande I / O-funktioner i Java (in- / utmatningsströmmar)
- Filmanipulation i Unix: Översikt över Unix File System
- Unix specialtecken eller metatecken för filmanipulation
- Unix File Access Permissions: Unix Chmod, Chown och Chgrp
- VBScript-filobjekt: CopyFile, DeleteFile, OpenTextFile, Läs och skriv textfil
- Java-distribution: Skapande och utförande av Java JAR-fil