El tractament de fitxers s'utilitza per emmagatzemar dades de manera permanent en un ordinador. Mitjançant la gestió de fitxers podem emmagatzemar les nostres dades a la memòria secundària (disc dur).
Com aconseguir el maneig de fitxers
Per aconseguir la gestió de fitxers hem de seguir els passos següents: -
PAS 1-Anomenament d'un fitxer
PAS 2-Obrir un fitxer
PAS 3-Escriure les dades al fitxer
PAS 4-Lectura de dades del fitxer
PAS 5-Tancar un fitxer.
Transmissions en C++ :-
Donem entrada al programa d'execució i el programa d'execució retorna la sortida. La seqüència de bytes donada com a entrada al programa en execució i la seqüència de bytes que surt com a sortida del programa en execució s'anomenen flux. En altres paraules, els fluxos no són més que el flux de dades en una seqüència.
L'operació d'entrada i sortida entre el programa en execució i els dispositius com el teclat i el monitor es coneixen com a operació d'E/S de la consola. L'operació d'entrada i sortida entre el programa en execució i els fitxers es coneix com a operació d'E/S de disc.
Classes per a operacions de flux de fitxers: -
El sistema d'E/S de C++ conté un conjunt de classes que defineixen els mètodes de gestió de fitxers. Aquestes inclouen les classes ifstream, ofstream i fstream. Aquestes classes es deriven de fstream i de la classe iostream corresponent. Aquestes classes, dissenyades per gestionar els fitxers del disc, es declaren en fstream i per tant hem d'incloure aquest fitxer en qualsevol programa que utilitzi fitxers.
1. ios:-
- ios significa flux d'entrada i sortida.
- Aquesta classe és la classe base per a altres classes d'aquesta jerarquia de classes.
- Aquesta classe conté les instal·lacions necessàries que utilitzen totes les altres classes derivades per a operacions d'entrada i sortida.
2. istream:-
- istream significa flux d'entrada.
- Aquesta classe es deriva de la classe 'ios'.
- Aquesta classe gestiona el flux d'entrada.
- L'operador d'extracció (>>) està sobrecarregat en aquesta classe per gestionar els fluxos d'entrada dels fitxers a l'execució del programa.
- Aquesta classe declara funcions d'entrada com ara get(), getline() i read().
3. a l'altra banda:-
- ostream significa flux de sortida.
- Aquesta classe es deriva de la classe 'ios'.
- Aquesta classe gestiona el flux de sortida.
- L'operador d'inserció (<<) està sobrecarregat en aquesta classe per gestionar els fluxos de sortida als fitxers des de l'execució del programa.
- Aquesta classe declara funcions de sortida com put() i write().
4. streambuf:-
fer executable un script sh
- Aquesta classe conté un punter que apunta a la memòria intermèdia que s'utilitza per gestionar els fluxos d'entrada i sortida.
5. fstreambase:-
- Aquesta classe proporciona operacions comunes als fluxos de fitxers. Serveix com a base per a les classes fstream, ifstream i ofstream.
- Aquesta classe conté les funcions open() i close().
6. ifstream:-
- Aquesta classe proporciona operacions d'entrada.
- Conté la funció open() amb el mode d'entrada predeterminat.
- Hereta les funcions get(), getline(), read(), seekg() i tellg() de l'istream.
7. de corrent: -
- Aquesta classe proporciona operacions de sortida.
- Conté la funció open() amb el mode de sortida predeterminat.
- Hereta les funcions put(), write(), seekp() i tellp() de l'ostream.
8. Fstream:-
- Aquesta classe proporciona suport per a operacions d'entrada i sortida simultànies.
- Hereta totes les funcions de les classes istream i ostream mitjançant iostream.
9. filebuf:-
- El seu propòsit és configurar els buffers dels fitxers per llegir i escriure.
- També podem utilitzar la funció de membre del buffer de fitxers per determinar la longitud del fitxer.
En C++, els fitxers es tracten principalment utilitzant tres classes fstream, ifstream, ofstream disponibles a fstream headerfile.
ofstream: Reprodueix la classe per escriure en fitxers
ifstream: Reprodueix la classe per llegir des dels fitxers
fstream: Transmet la classe per llegir i escriure des de i cap a fitxers.

Ara el primer pas per obrir el fitxer en particular per a l'operació de lectura o escriptura. Podem obrir el fitxer per
1. passar el nom del fitxer al constructor en el moment de la creació de l'objecte
2. utilitzant el mètode obert
Per ex.
Obriu el fitxer mitjançant el constructor
ifstream (const char* nom de fitxer, ios_base::openmode mode = ios_base::in);
ifstream fin (nom de fitxer, openmode) per defecte openmode = ios::in
ifstream fin(nom del fitxer);Obriu el fitxer mitjançant el mètode obert
Crida al constructor predeterminat
ifstream fi;
fin.open(nom del fitxer, mode obert)
fin.open(nom del fitxer);
Modes:
| Membre Constant | Significa | Accés |
|---|---|---|
| en * | entrada | Fitxer obert per llegir: el buffer de flux intern admet operacions d'entrada. |
| fora | sortida | Fitxer obert per escriure: el buffer de flux intern admet operacions de sortida. |
| binari | binari | Les operacions es realitzen en mode binari en lloc de text. |
| va menjar | al final | La posició de sortida comença al final del fitxer. |
| aplicació | adjuntar | Totes les operacions de sortida es produeixen al final del fitxer i s'afegeixen al seu contingut existent. |
| tronc | truncar | Es descarta qualsevol contingut que existia al fitxer abans d'obrir-lo. |
Modes oberts per defecte:
| ifstream | ios::in |
| de corrent | ios::fora |
| fstream | ios::in | ios::fora |
Plantejament del problema : Per llegir i escriure un fitxer en C++.
Exemples:
Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>
A continuació es mostra la implementació mitjançant l'ús classes 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;> }> |
>
>
Complexitat temporal: O(n)
Espai auxiliar: O(1)
A continuació es mostra la implementació mitjançant l'ús classe fstream .
és un personatge especial
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;> }> |
>
>
Complexitat temporal: O(n)
Espai 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>>rn;> > >cout<<>'
Enter the Name:'>;> >cin>>nom;> > >cout<<>'
Enter the Fee:'>;> >cin>> tarifa;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '/write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>rno>>nom>>tarifa; //llegeix dades del fitxer student fin.close(); cout<' '<' '< return 0; }> |
>
>
Complexitat temporal: O(1)
Espai 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>>nom>>tarifa;>>> >fin.close();> > >cout<' '<' '< return 0; }> |
>
>
Complexitat temporal: O(1)
Espai auxiliar: O (50)