logo

Upravljanje datotek prek razredov C++

Upravljanje datotek se uporablja za trajno shranjevanje podatkov v računalniku. Z upravljanjem datotek lahko svoje podatke shranimo v sekundarni pomnilnik (trdi disk).
Kako doseči ravnanje z datotekami
Za doseganje obdelave datotek moramo slediti naslednjim korakom:-
1. KORAK - Poimenovanje datoteke
2. KORAK - Odpiranje datoteke
3. KORAK - Zapis podatkov v datoteko
KORAK 4-Branje podatkov iz datoteke
5. KORAK - Zapiranje datoteke.

Tokovi v C++:-

Mi damo vhod izvajalnemu programu in izvršilni program vrne izhod. Zaporedje bajtov, ki je dano kot vhod izvajalnemu programu, in zaporedje bajtov, ki prihaja kot izhod iz izvajalnega programa, se imenuje tok. Z drugimi besedami, tokovi niso nič drugega kot tok podatkov v zaporedju.



Vhodno-izhodna operacija med izvajajočim se programom in napravami, kot sta tipkovnica in monitor, je znana kot V/I operacija konzole. Vhodna in izhodna operacija med izvajajočim se programom in datotekami je znana kot disk I/O operacija.

Razredi za operacije toka datotek: -

V/I sistem C++ vsebuje nabor razredov, ki definirajo metode ravnanja z datotekami. Ti vključujejo razrede ifstream, ofstream in fstream. Ti razredi so izpeljani iz fstream in iz ustreznega razreda iostream. Ti razredi, zasnovani za upravljanje datotek na disku, so deklarirani v fstreamu, zato moramo to datoteko vključiti v vsak program, ki uporablja datoteke.
1. ios:-

  • ios pomeni vhodni izhodni tok.
  • Ta razred je osnovni razred za druge razrede v tej hierarhiji razredov.
  • Ta razred vsebuje potrebne zmogljivosti, ki jih uporabljajo vsi drugi izpeljani razredi za vhodne in izhodne operacije.

2. istream:-



  • istream pomeni vhodni tok.
  • Ta razred je izpeljan iz razreda 'ios'.
  • Ta razred obravnava vhodni tok.
  • Operator ekstrakcije (>>) je v tem razredu preobremenjen za obdelavo vhodnih tokov iz datotek v izvajanje programa.
  • Ta razred deklarira vhodne funkcije, kot so get(), getline() in read().

3. na drugi strani:-

  • ostream pomeni izhodni tok.
  • Ta razred je izpeljan iz razreda 'ios'.
  • Ta razred obravnava izhodni tok.
  • Operator vstavljanja (<<) je v tem razredu preobremenjen za obdelavo izhodnih tokov v datoteke iz izvajanja programa.
  • Ta razred deklarira izhodne funkcije, kot sta put() in write().

4. streambuf:-

kamelji piton
  • Ta razred vsebuje kazalec, ki kaže na medpomnilnik, ki se uporablja za upravljanje vhodnih in izhodnih tokov.

5. fstreambase:-



  • Ta razred nudi operacije, ki so skupne tokovom datotek. Služi kot osnova za razrede fstream, ifstream in ofstream.
  • Ta razred vsebuje funkcijo open() in close().

6. ifstream:-

  • Ta razred zagotavlja vnosne operacije.
  • Vsebuje funkcijo open() s privzetim načinom vnosa.
  • Podeduje funkcije get(), getline(), read(), seekg() in tellg() iz istreama.

7. ofstream:-

  • Ta razred zagotavlja izhodne operacije.
  • Vsebuje funkcijo open() s privzetim izhodnim načinom.
  • Podeduje funkcije put(), write(), seekp() in tellp() iz ostreama.

8. fstream:-

  • Ta razred zagotavlja podporo za hkratne vhodne in izhodne operacije.
  • Podeduje vse funkcije razredov istream in ostream prek iostreama.

9. filebuf:-

  • Njegov namen je nastaviti medpomnilnike datotek za branje in pisanje.
  • Za določitev dolžine datoteke lahko uporabimo tudi funkcijo člana medpomnilnika datotek.

V C++ se datoteke večinoma obravnavajo z uporabo treh razredov fstream, ifstream, ofstream, ki so na voljo v datoteki glave fstream.
ofstream: Pretočni razred za pisanje v datoteke
ifstream: Pretočni razred za branje iz datotek
fstream: Pretočni razred za branje in pisanje iz/v datoteke.

Zdaj je prvi korak za odpiranje določene datoteke za branje ali pisanje. Datoteko lahko odpremo z
1. posredovanje imena datoteke v konstruktorju v času ustvarjanja objekta
2. z uporabo odprte metode

Za npr.

Odprite datoteko s pomočjo konstruktorja
ifstream (const char* ime datoteke, način ios_base::openmode = ios_base::in);
ifstream fin(ime datoteke, openmode) privzeto openmode = ios::in
ifstream fin(ime datoteke);

Odprite datoteko z odprto metodo
Klic privzetega konstruktorja
ifstream konec;
fin.open(ime datoteke, odprti način)
fin.open(ime datoteke);

Načini:

Stalni član Pomeni Dostop
v * vnos Datoteka odprta za branje: notranji medpomnilnik toka podpira vnosne operacije.
ven izhod Datoteka odprta za pisanje: notranji medpomnilnik toka podpira izhodne operacije.
dvojiško dvojiško Operacije se izvajajo v binarnem načinu namesto besedila.
jedel na koncu Izhodni položaj se začne na koncu datoteke.
aplikacija priložiti Vse izhodne operacije se zgodijo na koncu datoteke in se dodajo njeni obstoječi vsebini.
prtljažnik skrajšati Vsa vsebina, ki je obstajala v datoteki, preden je bila odprta, je zavržena.

Privzeti odprti načini:

ifstream ios::in
ofstream ios::out
fstream ios::in | ios::out

Izjava o težavi : Branje in pisanje datoteke v C++.
Primeri:

Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>

Spodaj je izvedba z uporabo razredi ifstream in ofstream .

C++




/* File Handling with C++ using ifstream & ofstream class object*/> /* To write the Content in File*/> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> >fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> >// Creation of ofstream class object> >ofstream fout;> >string line;> >// by default ios::out mode, automatically deletes> >// the content of file. To append the content, open in ios:app> >// fout.open('sample.txt', ios::app)> >fout.open(>'sample.txt'>);> >// Execute a loop If file successfully opened> >while> (fout) {> >// Read a Line from standard input> >getline(cin, line);> >// Press -1 to exit> >if> (line ==>'-1'>)> >break>;> >// Write line in file> >fout << line << endl;> >}> >// Close the File> >fout.close();> >// Creation of ifstream class object to read the file> >ifstream fin;> >// by default open mode = ios::in mode> >fin.open(>'sample.txt'>);> >// Execute a loop until EOF (End of File)> >while> (getline(fin, line)) {> > >// Print line (read from file) in Console> >cout << line << endl;> >}> >// Close the file> >fin.close();> >return> 0;> }>

>

>

Časovna zahtevnost: O(n)
Pomožni prostor: O(1)

Spodaj je izvedba z uporabo razred fstream .

C++




/* File Handling with C++ using fstream class object */> /* To write the Content in File */> /* Then to read the content of file*/> #include> /* fstream header file for ifstream, ofstream,> >fstream classes */> #include> using> namespace> std;> // Driver Code> int> main()> {> >// Creation of fstream class object> >fstream fio;> >string line;> >// by default openmode = ios::in|ios::out mode> >// Automatically overwrites the content of file, To append> >// the content, open in ios:app> >// fio.open('sample.txt', ios::in|ios::out|ios::app)> >// ios::trunc mode delete all content before open> >fio.open(>'sample.txt'>, ios::trunc | ios::out | ios::in);> >// Execute a loop If file successfully Opened> >while> (fio) {> >// Read a Line from standard input> >getline(cin, line);> >// Press -1 to exit> >if> (line ==>'-1'>)> >break>;> >// Write line in file> >fio << line << endl;> >}> >// Execute a loop until EOF (End of File)> >// point read pointer at beginning of file> >fio.seekg(0, ios::beg);> >while> (fio) {> >// Read a Line from File> >getline(fio, line);> >// Print line in Console> >cout << line << endl;> >}> >// Close the file> >fio.close();> >return> 0;> }>

>

>

Časovna zahtevnost: O(n)
Pomožni prostor: O(1)

C++




Q: write a single file handling program in c++ to reading and writing data on a file.> #include> #include> > using> namespace> std;> main()> {> >int> rno,fee;> >char> name[50];> > >cout<<>'Enter the Roll Number:'>;> >cin>>rno;> > >cout<<>' Enter the Name:'>;> >cin>>ime;> > >cout<<>' Enter the Fee:'>;> >cin>>pristojbina;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '>rno>>ime>>pristojbina; //branje podatkov iz datoteke student fin.close(); cout<' '<' '< return 0; }>

>

>

Časovna zahtevnost: O(1)
Pomožni prostor: O(1)

C++

stdin v c




// Q: WA C++ file handling program to read data from the file called student.doc> #include> #include> using> namespace> std;> main()> {> >int> rno,fee;> >char> name[50];> > >ifstream fin(>'d:/student.doc'>);> > >fin>>rno>>ime>>pristojbina;>//read data from the file student> > >fin.close();> > >cout<' '<' '< return 0; }>

>

>

Časovna zahtevnost: O(1)
Pomožni prostor: O(50)