logo

Gestionarea fișierelor prin clase C++

Gestionarea fișierelor este utilizată pentru a stoca datele în mod permanent într-un computer. Folosind gestionarea fișierelor ne putem stoca datele în memoria secundară (Hard disk).
Cum se realizează Gestionarea fișierelor
Pentru a realiza gestionarea fișierelor, trebuie să urmați următorii pași: -
PASUL 1-Denumirea unui fișier
PASUL 2-Deschiderea unui fișier
PASUL 3 - Scrierea datelor în fișier
PASUL 4-Citirea datelor din fișier
PASUL 5-Închiderea unui fișier.

Fluxuri în C++ :-

Dăm intrare programului de execuție, iar programul de execuție returnează rezultatul. Secvența de octeți dați ca intrare în programul de execuție și secvența de octeți care vine ca ieșire din programul de execuție se numesc flux. Cu alte cuvinte, fluxurile nu sunt altceva decât fluxul de date într-o secvență.



Operațiunile de intrare și ieșire dintre programul care se execută și dispozitivele precum tastatura și monitorul sunt cunoscute sub denumirea de operare I/O consolă. Operația de intrare și ieșire dintre programul de execuție și fișiere este cunoscută sub numele de operație I/O pe disc.

Clase pentru operațiuni de flux de fișiere:-

Sistemul I/O din C++ conține un set de clase care definesc metodele de gestionare a fișierelor. Acestea includ clasele ifstream, ofstream și fstream. Aceste clase sunt derivate din fstream și din clasa iostream corespunzătoare. Aceste clase, concepute pentru a gestiona fișierele disc, sunt declarate în fstream și de aceea trebuie să includem acest fișier în orice program care folosește fișiere.
1. ios:-

  • ios înseamnă flux de intrare și ieșire.
  • Această clasă este clasa de bază pentru alte clase din această ierarhie de clase.
  • Această clasă conține facilitățile necesare care sunt utilizate de toate celelalte clase derivate pentru operațiunile de intrare și ieșire.

2. istream:-



  • istream înseamnă flux de intrare.
  • Această clasă este derivată din clasa „ios”.
  • Această clasă tratează fluxul de intrare.
  • Operatorul de extracție (>>) este supraîncărcat în această clasă pentru a gestiona fluxurile de intrare de la fișiere la execuția programului.
  • Această clasă declară funcții de intrare precum get(), getline() și read().

3. pe cealaltă parte:-

  • ostream înseamnă flux de ieșire.
  • Această clasă este derivată din clasa „ios”.
  • Această clasă tratează fluxul de ieșire.
  • Operatorul de inserare (<<) este supraîncărcat în această clasă pentru a gestiona fluxurile de ieșire către fișiere din execuția programului.
  • Această clasă declară funcții de ieșire precum put() și write().

4. streambuf:-

centos vs redhat
  • Această clasă conține un pointer care indică bufferul care este utilizat pentru a gestiona fluxurile de intrare și de ieșire.

5. fstreambase:-



  • Această clasă oferă operații comune fluxurilor de fișiere. Servește ca bază pentru clasa fstream, ifstream și ofstream.
  • Această clasă conține funcția open() și close().

6. ifstream:-

  • Această clasă oferă operații de intrare.
  • Conține funcția open() cu modul de intrare implicit.
  • Moștenește funcțiile get(), getline(), read(), seekg() și tellg() din istream.

7. ofstream:-

  • Această clasă oferă operațiuni de ieșire.
  • Conține funcția open() cu modul implicit de ieșire.
  • Moștenește funcțiile put(), write(), seekp() și tellp() din ostream.

8. fstream:-

  • Această clasă oferă suport pentru operațiuni de intrare și ieșire simultane.
  • Moștenește toate funcțiile din clasele istream și ostream prin iostream.

9. filebuf:-

  • Scopul său este de a seta tampoanele de fișiere să citească și să scrie.
  • De asemenea, putem folosi funcția membru tampon al fișierului pentru a determina lungimea fișierului.

În C++, fișierele sunt tratate în principal prin utilizarea a trei clase fstream, ifstream, ofstream disponibile în fstream headerfile.
ofstream: Stream clasă pentru a scrie pe fișiere
ifstream: Stream clasă pentru a citi din fișiere
fstream: Transmiteți clasa pentru a citi și a scrie din/în fișiere.

Acum este primul pas pentru a deschide un anumit fișier pentru operație de citire sau scriere. Putem deschide fișierul prin
1. trecerea numelui fișierului în constructor la momentul creării obiectului
2. folosind metoda deschisă

Pentru ex.

Deschideți fișierul folosind constructorul
ifstream (const char* nume de fișier, ios_base::openmode mode = ios_base::in);
ifstream fin(nume fișier, mod deschis) în mod implicit openmode = ios::in
ifstream fin(nume fișier);

Deschideți fișierul folosind metoda deschisă
Apelarea constructorului implicit
ifstream end;
fin.open(nume fișier, mod deschis)
fin.open(nume fișier);

Moduri:

Membru Constant Standuri pentru Acces
in * intrare Fișier deschis pentru citire: tamponul de flux intern acceptă operațiuni de intrare.
afară ieșire Fișier deschis pentru scriere: tamponul de flux intern acceptă operațiuni de ieșire.
binar binar Operațiile sunt efectuate mai degrabă în modul binar decât în ​​text.
a mancat la sfârşit Poziția de ieșire începe la sfârșitul fișierului.
aplicația adăuga Toate operațiunile de ieșire au loc la sfârșitul fișierului, anexând la conținutul său existent.
trompă trunchia Orice conținut care a existat în fișier înainte de a fi deschis este eliminat.

Moduri de deschidere implicite:

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

Declarație problemă : Pentru a citi și a scrie un fișier în C++.
Exemple:

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

Mai jos este implementarea prin utilizare clase ifstream și 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;> }>

>

>

Complexitatea timpului: O(n)
Spațiu auxiliar: O(1)

Mai jos este implementarea prin utilizare clasa fstream .

C++




procesul Android acore continuă să se oprească

/* 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;> }>

>

>

Complexitatea timpului: O(n)
Spațiu auxiliar: 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>>nume;> > >cout<<>' Enter the Fee:'>;> >cin>>taxa;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '>rno>>nume>>taxa; //citește datele din fișierul student fin.close(); cout<' '<' '< return 0; }>

>

>

Complexitatea timpului: O(1)
Spațiu auxiliar: O(1)

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>>nume>>taxa;>>>> >fin.close();> > >cout<' '<' '< return 0; }>

>

>

Complexitatea timpului: O(1)
Spațiu auxiliar: O(50)