logo

Filhantering genom C++-klasser

Filhantering används för att lagra data permanent i en dator. Med filhantering kan vi lagra våra data i sekundärt minne (hårddisk).
Hur man uppnår filhanteringen
För att uppnå filhantering måste vi följa följande steg:-
STEG 1 - Namnge en fil
STEG 2-Öppna en fil
STEG 3-Skriva data till filen
STEG 4-Läser data från filen
STEG 5-Stänga en fil.

Strömmar i C++ :-

Vi ger input till exekveringsprogrammet och exekveringsprogrammet ger tillbaka utgången. Sekvensen av byte som ges som indata till det körande programmet och sekvensen av byte som kommer som utdata från det körande programmet kallas ström. Strömmar är med andra ord inget annat än flödet av data i en sekvens.



Ingångs- och utmatningsoperationen mellan det körande programmet och enheterna som tangentbord och monitor kallas konsol I/O-drift. Inmatnings- och utmatningsoperationen mellan det körande programmet och filerna kallas disk I/O-operation.

Klasser för filströmsoperationer:-

I/O-systemet i C++ innehåller en uppsättning klasser som definierar filhanteringsmetoderna. Dessa inkluderar klasser ifstream, ofstream och fstream. Dessa klasser är härledda från fstream och från motsvarande iostream-klass. Dessa klasser, designade för att hantera diskfilerna, deklareras i fstream och därför måste vi inkludera den här filen i alla program som använder filer.
1. ios:-

  • ios står för input output stream.
  • Denna klass är basklassen för andra klasser i denna klasshierarki.
  • Denna klass innehåller de nödvändiga faciliteterna som används av alla andra härledda klasser för in- och utmatningsoperationer.

2. istream:-



  • istream står för input stream.
  • Denna klass kommer från klassen 'ios'.
  • Denna klass hanterar ingångsström.
  • Extraktionsoperatorn (>>) är överbelastad i denna klass för att hantera indataströmmar från filer till programexekveringen.
  • Den här klassen deklarerar indatafunktioner som get(), getline() och read().

3. på andra sidan:-

  • ostream står för output stream.
  • Denna klass kommer från klassen 'ios'.
  • Denna klass hanterar utdataström.
  • Insättningsoperatorn (<<) är överbelastad i denna klass för att hantera utdataströmmar till filer från programkörningen.
  • Den här klassen deklarerar utdatafunktioner som put() och write().

4. streambuf:-

python tuppel sorterad
  • Denna klass innehåller en pekare som pekar på bufferten som används för att hantera in- och utströmmar.

5. fstreambase:-



  • Den här klassen tillhandahåller operationer som är gemensamma för filströmmarna. Fungerar som bas för klasserna fstream, ifstream och ofstream.
  • Den här klassen innehåller funktionerna open() och close().

6. ifstream:-

  • Denna klass tillhandahåller inmatningsoperationer.
  • Den innehåller funktionen open() med standardinmatningsläge.
  • Ärver funktionerna get(), getline(), read(), seekg() och tellg() från istream.

7. ofstream:-

  • Denna klass tillhandahåller utdataoperationer.
  • Den innehåller funktionen open() med standardutgångsläge.
  • Ärver funktionerna put(), write(), seekp() och tellp() från ostreamen.

8. fstream:-

  • Denna klass ger stöd för samtidiga in- och utdataoperationer.
  • Ärver alla funktioner från istream och ostream klasser genom iostream.

9. filebuf:-

  • Dess syfte är att ställa in filbuffertarna för att läsa och skriva.
  • Vi kan också använda filbuffertmedlemsfunktionen för att bestämma längden på filen.

I C++ hanteras filer huvudsakligen genom att använda tre klasser fstream, ifstream, ofstream tillgängliga i fstream headerfile.
ofstream: Streama klass för att skriva på filer
ifstream: Streama klass för att läsa från filer
fstream: Streama klass för att både läsa och skriva från/till filer.

Nu är det första steget att öppna den specifika filen för läs- eller skrivoperation. Vi kan öppna filen genom
1. skickar filnamnet i konstruktorn vid tidpunkten för objektskapandet
2. använda den öppna metoden

För t.ex.

Öppna fil med hjälp av konstruktorn
ifstream (const char* filnamn, ios_base::openmode mode = ios_base::in);
ifstream fin(filnamn, öppetläge) som standard öppetläge = ios::in
ifstream fin(filnamn);

Öppna fil med öppen metod
Anropar standardkonstruktorn
ifstream slut;
fin.open(filnamn, öppet läge)
fin.open(filnamn);

Lägen:

Medlem Constant Står för Tillgång
i * inmatning Fil öppen för läsning: den interna strömbufferten stöder inmatningsoperationer.
ut produktion Fil öppen för skrivning: den interna strömbufferten stöder utdataoperationer.
binär binär Operationer utförs i binärt läge snarare än text.
åt i slutet Utdatapositionen börjar i slutet av filen.
app bifoga Alla utdataoperationer sker i slutet av filen och läggs till dess befintliga innehåll.
trunk stympa Allt innehåll som fanns i filen innan den öppnades kasseras.

Öppna standardlägen:

ifstream ios::in
ofstream ios::ut
fstream ios::in | ios::ut

Problembeskrivning : För att läsa och skriva en fil i C++.
Exempel:

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

Nedan är implementeringen genom att använda ifstream och ofstream-klasser .

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

>

>

Tidskomplexitet: O(n)
Hjälputrymme: O(1)

Nedan är implementeringen genom att använda fstream klass .

e-r modelldiagram

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

>

>

Tidskomplexitet: O(n)
Hjälputrymme: 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>>namn;> > >cout<<>' Enter the Fee:'>;> >cin>>avgift;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '>rno>>namn>>avgift; //läs data från filen student fin.close(); cout<' '<' '< return 0; }>

>

>

Tidskomplexitet: O(1)
Hjälputrymme: 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>>namn>>avgift;>//read data from the file student> > >fin.close();> > >cout<' '<' '< return 0; }>

>

>

Tidskomplexitet: O(1)
Hjälputrymme: O(50)