file input output operations c
Študija o izhodnih operacijah vnosa datotek in funkcijah kazalcev datotek v C ++.
Pri sprotnem programiranju imamo opravka z velikimi deli podatkov, ki jih ni mogoče sprejeti iz standardnih vhodno-izhodnih naprav. Zato moramo za shranjevanje podatkov uporabiti sekundarni pomnilnik. Z uporabo sekundarnega pomnilnika običajno shranjujemo podatke v obliki datotek.
Podatke iz datotek lahko beremo ali zapisujemo v datoteke z uporabo zaporedja podatkov, imenovanih tokovi, bodisi v besedilnem ali binarnem formatu. Z datotekami v C ++ obstajajo različne vhodno / izhodne in druge operacije. Ta vadnica razlaga te operacije, povezane z datotekami, ki uporabljajo različne razrede.
=> Obiščite tukaj za ekskluzivno serijo vadnic za C ++.
Kaj se boste naučili:
Razredi vhodnih / izhodnih datotek v C ++
V C ++ smo videli razred iostream, ki definira standardno vhodno in izhodno funkcionalnost, vključno s cin in cout. Ta razred je omejen na standardne vhodne in izhodne naprave, kot sta tipkovnica in monitor.
Ko gre za datotečne operacije, ima C ++ drugačen nabor razredov, ki jih je mogoče uporabiti.
Ti razredi so opisani spodaj:
- Od toka: Razred za obdelavo datotek, ki pomeni izhodni tok datotek in se uporablja za zapisovanje podatkov v datoteke.
- Če je tok: Razred za obdelavo datotek, ki pomeni tok vhodne datoteke in se uporablja za branje podatkov iz datoteke.
- Fstream: Razred za obdelavo datotek, ki ima možnost obdelave tako ifstream kot ofstream. Uporablja se lahko za branje iz datoteke in pisanje vnjo.
V programu C ++ File Handling so podprte naslednje operacije:
- Odprite datoteko
- Zaprite datoteko
- Branje iz datoteke
- Zapiši v datoteko
Oglejmo si vsako od teh operacij podrobno !!
Odprite datoteko
Povezovanje predmeta enega od razredov toka z datoteko bodisi za branje bodisi pisanje ali oboje se imenuje odpiranje datoteke. Z uporabo tega predmeta pretoka je v kodi predstavljena odprta datoteka. Tako bo vsaka operacija branja / pisanja, izvedena na tem objektu toka, uporabljena tudi za fizično datoteko.
Splošna sintaksa za odpiranje datoteke s tokom je:
void open(const char* filename, ios::open mode mode)
Tukaj,
filename => niz, ki vsebuje pot in ime datoteke, ki jo želite odpreti.
mode => Izbirni parameter, ki označuje način, v katerem naj se datoteka odpre.
C ++ podpira različne načine, v katerih je datoteko mogoče odpreti. Kombinacijo teh načinov lahko določimo tudi z operaterjem OR.
1 nf 2 nf 3 nf
Datotečni način | Opis |
---|---|
ios :: in | Odpre datoteko v načinu vnosa za branje. |
ios :: out | Odpre datoteko v izhodnem načinu za zapisovanje podatkov v datoteko. |
ios :: jedel | Nastavite začetni položaj na koncu datoteke. Če zastavica konca datoteke ni nastavljena, je začetni položaj nastavljen na začetek datoteke. |
ios :: trunc | Če je datoteka odprta za pisanje in že vsebuje vsebino, je vsebina okrnjena. |
ios :: app | Datoteko odpre v načinu dodajanja, tako da je vsa vsebina dodana na koncu datoteke. |
ios :: binarno | Odpre datoteko v binarnem načinu. |
Na primer,če želimo odpreti datoteko »myfile.dat« za dodajanje podatkov v binarnem načinu, potem lahko napišemo naslednjo kodo.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Kot smo že omenili, parameter načina ni obvezen. Ko datoteko odpremo brez navedbe drugega parametra, ima funkcija odprtega člana ofstream, ifstream ali fstream privzeti način, s katerim datoteko odpremo.
Ti so podani na naslednji način:
Razred | Privzeti način |
---|---|
Ifstream | ios :: in |
od toka | ios :: out |
Fstream | ios :: v | ios :: ven |
Če torej v funkciji open ne določimo drugega parametra, se datoteka odpre v privzetem načinu.
c ++ pretvori char * v int
Zapiranje datoteke
Ko končamo z vhodnimi in izhodnimi operacijami v datoteki, lahko s funkcijo zapiranja zapremo datoteko in sprostimo vire, ki jih ima datoteka.
Funkcija zapiranja datoteke je:
void close()
Ko končamo z operacijami nad zgornjo datoteko myfile, jo lahko zapremo na naslednji način:
myfile.close();
Ko datoteko zaprete s funkcijo zapiranja, lahko povezani datotečni objekt ponovno uporabite za odpiranje druge datoteke.
Branje iz datoteke
Podatke lahko beremo iz datoteke po vrsticah z operaterjem ekstrakcije toka (>>). To je podobno branju vhodov s standardnega vhoda s pomočjo cin. Edina razlika je v primeru datotek, namesto cin uporabljamo objekt ifstream ali fstream.
Vzorčna koda za branje iz datoteke je podana spodaj:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<V zgornji kodi odpremo datoteko in z operaterjem ekstrakcije toka (>>) preberemo vsebino datoteke. Ko končamo z branjem, lahko datoteko zapremo.
Pisanje v datoteko
Podatke lahko v datoteko zapišemo tudi z datotečnimi operacijami. Operator, ki ga uporabljamo za zapisovanje podatkov v datoteko, je operater za vstavljanje toka (<<). 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.
Upoštevajmo naslednjo kodo primera:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Tu preberemo vrstico iz vhoda in jo zapišemo v datoteko, ki se je odprla s predmetom odtoka.
V spodnjem primeru kode prikazujemo vse postopke obdelave datotek.
#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; }
Izhod:
Pisanje v datoteko
Vpišite svoje ime: Ved
Vnesite svojo starost: 7
Branje iz datoteke
Avtor
7.
V zgornjem programu najprej odpremo datoteko v načinu pisanja. Nato preberemo podatke, torej ime in starost, ter jih zapišemo v datoteko. Nato zapremo to datoteko. Nato odpremo isto datoteko v načinu branja in iz datoteke beremo podatke po vrsticah in jih izpišemo na zaslon.
Tako ta program pokriva vse datotečne V / I operacije.
Datoteke državne žlindre
Obstaja nekaj funkcij članov, ki se uporabljajo za preverjanje stanja datoteke. Vse te funkcije vrnejo logično vrednost.
Te funkcije smo razdelili na naslednji način:
Funkcija Opis eof () Vrne true, če je med branjem datoteke dosežen konec datoteke. ne uspe () Vrne true, če operacija branja / pisanja ne uspe ali pride do napake pri oblikovanju slab() Vrne true, če branje iz datoteke ali pisanje v datoteko ne uspe. dobro () Vrne false v istih primerih, v katerih bi klic katere koli od zgornjih funkcij vrnil true.
Get / Put in druge posebne operacije
Datotečni vhodno-izhodni tokovi, ki smo jih videli doslej, imajo notranje položaje pridobivanja in postavljanja, podobne drugim V / I tokovom, kot je iostream.
Razred ifstream ima notranji položaj get, ki vsebuje lokacijo elementa / znaka, ki ga je treba prebrati v datoteki v naslednji vnosni operaciji. Razred toka ima notranji položeni položaj, ki vsebuje lokacijo elementa / znaka, ki ga je treba zapisati v naslednji izhodni operaciji.
Mimogrede, fstream ima položaje get in put.
Za lažje branje in pisanje z uporabo teh položajev imamo nekaj funkcij članov, ki se uporabljajo za opazovanje in spreminjanje teh položajev.
Te funkcije so navedene spodaj:
Funkcije Opis Tellg () Vrne trenutni položaj kazalca get Tellp () Vrne trenutni položaj kazalca iskati (položaj) Premiki dobijo kazalec na določeno lokacijo, ki šteje od začetka datoteke seeg (odmik, smer) Premiki dobijo kazalec na odmično vrednost glede na točko, določeno s smerjo parametra. iskalnik (položaj) Premakne kazalec na določeno lokacijo, ki šteje od začetka datoteke iskati (odmik, smer) Premiki dajo kazalec na odmično vrednost glede na točko, določeno s smerjo parametra.
Parameter smer v zgornjih prototipih funkcij je našteti vrsta tipa askdir in določa točko, od katere se šteje odmik.
Lahko ima naslednje vrednosti.
ios :: izm Odmik od začetka toka ios :: cur Odmik od trenutnega položaja ios :: konec Odmik od konca toka
Oglejmo si celoten primer, ki prikazuje uporabo teh funkcij.
#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'< Izhod:
Nova datoteka je bila ustvarjena
analiza vzrokov pri testiranju programske opreme
Začetni položaj kazalca datoteke na: 34
Po iskalu (-1, ios :: cur), položaj kazalca datoteke na: 33
Po iskalcu (5, ios :: beg), kazalec datoteke na: 5
Po findg (1, ios :: cur), kazalec datoteke na: 6

Kot je prikazano v zgornjem programu, imamo ustvarjeno datoteko, v katero napišemo vrstico besedila. Nato z različnimi zgoraj opisanimi funkcijami prikažemo različne položaje kazalca datotek.
Zaključek
V tej vadnici smo videli različne operacije datotek za odpiranje, zapiranje in branje / pisanje podatkov iz / v datoteko.
Ogledali smo tudi funkcije za spreminjanje kazalca datoteke za dostop do določenih položajev v datoteki. V naslednjih vajah bomo razpravljali o nekaj pomembnejših temah, povezanih s C ++.
=> Preberite serijo Easy C ++ Training Series.
Priporočeno branje
- Osnovne vhodno / izhodne operacije v jeziku C ++
- Vhodno-izhodni podatki in datoteke v Pythonu (Odpiranje, branje in pisanje v datoteko Python)
- Osnovne V / I operacije v Javi (vhodni / izhodni tokovi)
- Manipulacija datotek v Unixu: Pregled datotečnega sistema Unix
- Posebni znaki ali metaznaki Unix za manipulacijo datotek
- Dovoljenja za dostop do datotek Unix: Unix Chmod, Chown in Chgrp
- Predmeti datoteke VBScript: CopyFile, DeleteFile, OpenTextFile, branje in pisanje besedilne datoteke
- Uvajanje Java: Ustvarjanje in izvajanje datoteke Java JAR