Bestandsverwerking wordt gebruikt om gegevens permanent op een computer op te slaan. Met behulp van bestandsverwerking kunnen we onze gegevens opslaan in het secundaire geheugen (harde schijf).
Hoe u de bestandsafhandeling kunt bereiken
Om bestandsverwerking te bereiken, moeten we de volgende stappen volgen: -
STAP 1-Een bestand een naam geven
STAP 2-Een bestand openen
STAP 3 - Gegevens naar het bestand schrijven
STAP 4 - Gegevens uit het bestand lezen
STAP 5-Een bestand sluiten.
Streams in C++: -
Wij geven input aan het uitvoerende programma en het uitvoeringsprogramma geeft de output terug. De reeks bytes die als invoer voor het uitvoerende programma wordt gegeven en de reeks bytes die als uitvoer uit het uitvoerende programma komt, worden stream genoemd. Met andere woorden, stromen zijn niets anders dan de stroom van gegevens in een reeks.
De invoer- en uitvoerbewerking tussen het uitvoerende programma en de apparaten zoals toetsenbord en monitor staan bekend als console-I/O-bewerking. De invoer- en uitvoerbewerking tussen het uitvoerende programma en de bestanden staat bekend als schijf-I/O-bewerking.
Klassen voor bestandsstreambewerkingen: -
Het I/O-systeem van C++ bevat een reeks klassen die de bestandsverwerkingsmethoden definiëren. Deze omvatten ifstream-, ofstream- en fstream-klassen. Deze klassen zijn afgeleid van fstream en van de overeenkomstige iostream-klasse. Deze klassen, ontworpen om de schijfbestanden te beheren, worden gedeclareerd in fstream en daarom moeten we dit bestand opnemen in elk programma dat bestanden gebruikt.
1. iOS: -
- ios staat voor input-outputstream.
- Deze klasse is de basisklasse voor andere klassen in deze klassenhiërarchie.
- Deze klasse bevat de noodzakelijke faciliteiten die door alle andere afgeleide klassen worden gebruikt voor invoer- en uitvoerbewerkingen.
2. istream:-
- istream staat voor inputstream.
- Deze klasse is afgeleid van de klasse ‘ios’.
- Deze klasse verwerkt de invoerstroom.
- De extractieoperator(>>) is in deze klasse overbelast om invoerstromen van bestanden naar de programma-uitvoering te verwerken.
- Deze klasse declareert invoerfuncties zoals get(), getline() en read().
3. aan de andere kant: -
- ostream staat voor uitvoerstroom.
- Deze klasse is afgeleid van de klasse ‘ios’.
- Deze klasse verwerkt de uitvoerstroom.
- De invoegoperator(<<) is in deze klasse overbelast om uitvoerstromen naar bestanden vanuit de programma-uitvoering te verwerken.
- Deze klasse declareert uitvoerfuncties zoals put() en write().
4. streambuf: -
Java is leeg
- Deze klasse bevat een pointer die verwijst naar de buffer die wordt gebruikt om de invoer- en uitvoerstromen te beheren.
5. fstreambase: -
- Deze klasse biedt bewerkingen die gemeenschappelijk zijn voor de bestandsstromen. Dient als basis voor de fstream-, ifstream- en ofstream-klasse.
- Deze klasse bevat de functies open() en close().
6. ifstream: -
- Deze klasse biedt invoerbewerkingen.
- Het bevat de functie open() met standaardinvoermodus.
- Erft de functies get(), getline(), read(), seekg() en tellg() van de istream.
7. stroomafwaarts: -
- Deze klasse biedt uitvoerbewerkingen.
- Het bevat de functie open() met standaarduitvoermodus.
- Erft de functies put(), write(), seekp() en tellp() van de ostream.
8. fstream: -
- Deze klasse biedt ondersteuning voor gelijktijdige invoer- en uitvoerbewerkingen.
- Erft alle functies van istream- en ostream-klassen via iostream.
9. bestandsbuf: -
- Het doel ervan is om de bestandsbuffers in te stellen op lezen en schrijven.
- We kunnen ook de bestandsbufferlidfunctie gebruiken om de lengte van het bestand te bepalen.
In C++ worden bestanden voornamelijk afgehandeld door gebruik te maken van de drie klassen fstream, ifstream en ofstream die beschikbaar zijn in fstream headerfile.
stroom: Stream klasse om op bestanden te schrijven
ifstream: Streamklasse om uit bestanden te lezen
fstream: Stream klasse om zowel van/naar bestanden te lezen als te schrijven.

Nu is de eerste stap om het specifieke bestand te openen voor lees- of schrijfbewerking. We kunnen het bestand openen met
1. bestandsnaam doorgeven aan constructor op het moment dat het object wordt gemaakt
2. via de open methode
Voor b.v.
Open het bestand met behulp van de constructor
ifstream (const char* bestandsnaam, ios_base::openmode mode = ios_base::in);
ifstream fin(bestandsnaam, openmode) standaard openmode = ios::in
ifstream fin(bestandsnaam);Open bestand met behulp van de open-methode
Aanroepen van de standaardconstructor
ifstream-einde;
fin.open(bestandsnaam, openmodus)
fin.open(bestandsnaam);
Modi:
| Lid Constant | Betekent | Toegang |
|---|---|---|
| in * | invoer | Bestand geopend om te lezen: de interne streambuffer ondersteunt invoerbewerkingen. |
| uit | uitgang | Bestand geopend voor schrijven: de interne streambuffer ondersteunt uitvoerbewerkingen. |
| binair | binair | Bewerkingen worden uitgevoerd in binaire modus in plaats van in tekstvorm. |
| at | aan het einde | De uitvoerpositie begint aan het einde van het bestand. |
| app | toevoegen | Alle uitvoerbewerkingen vinden plaats aan het einde van het bestand en worden toegevoegd aan de bestaande inhoud. |
| kofferbak | afkappen | Alle inhoud die in het bestand aanwezig was voordat het werd geopend, wordt verwijderd. |
Standaard open modi:
| alsstroom | ios::in |
| vanstroom | ios::uit |
| fstroom | ios::in | ios::uit |
Probleemstelling : Om een bestand te lezen en te schrijven in C++.
Voorbeelden:
Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>
Hieronder vindt u de implementatie met behulp van ifstream- en ofstream-klassen .
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;> }> |
>
>
Tijdcomplexiteit: O(n)
Hulpruimte: O(1)
Hieronder vindt u de implementatie met behulp van fstream-klasse .
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;> }> |
>
>
Tijdcomplexiteit: O(n)
Hulpruimte: O(1)
C++
array in Java
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>>naam;> > >cout<<>'
Enter the Fee:'>;> >cin>>vergoeding;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '/write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>rno>>naam>>vergoeding; //lees gegevens uit het bestand student fin.close(); uit<' '<' '< return 0; }> |
>
>
Tijdcomplexiteit: O(1)
Hulpruimte: 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>>naam>>vergoeding;>//read data from the file student> > >fin.close();> > >cout<' '<' '< return 0; }> |
>
>
Tijdcomplexiteit: O(1)
Hulpruimte: O(50)