Tiedostonkäsittelyä käytetään tietojen tallentamiseen pysyvästi tietokoneeseen. Tiedostonkäsittelyä käyttämällä voimme tallentaa tietomme toissijaiseen muistiin (kiintolevylle).
Kuinka saavuttaa tiedostojen käsittely
Tiedostojen käsittelyn saavuttamiseksi meidän on noudatettava seuraavia vaiheita: -
VAIHE 1 - Nimeä tiedosto
VAIHE 2 - Tiedoston avaaminen
VAIHE 3 - Tietojen kirjoittaminen tiedostoon
VAIHE 4 - Tietojen lukeminen tiedostosta
VAIHE 5 - Tiedoston sulkeminen.
Suoratoista C++:lla :-
Annamme syötteen suoritettavalle ohjelmalle ja suoritusohjelma palauttaa tulosteen. Suoritusohjelman syötteenä annettua tavujonoa ja suoritettavan ohjelman ulostulona tulevaa tavusarjaa kutsutaan virtaukseksi. Toisin sanoen virrat eivät ole muuta kuin datavirtaa järjestyksessä.
Suoritettavan ohjelman ja laitteiden, kuten näppäimistön ja näytön, välinen syöttö- ja tulostustoiminto tunnetaan konsolin I/O-toiminnona. Suoritettavan ohjelman ja tiedostojen välinen syöttö- ja tulostustoiminto tunnetaan levyn I/O-toiminnona.
Tiedostojen stream -toimintojen luokat: -
C++:n I/O-järjestelmä sisältää joukon luokkia, jotka määrittelevät tiedostojen käsittelytavat. Näitä ovat ifstream-, ofstream- ja fstream-luokat. Nämä luokat on johdettu fstreamista ja vastaavasta iostream-luokasta. Nämä luokat, jotka on suunniteltu hallitsemaan levytiedostoja, ilmoitetaan fstreamissä, ja siksi meidän on sisällytettävä tämä tiedosto kaikkiin tiedostoja käyttäviin ohjelmiin.
1. ios:-
- ios tarkoittaa input output stream.
- Tämä luokka on perusluokka muille tämän luokkahierarkian luokille.
- Tämä luokka sisältää tarvittavat tilat, joita kaikki muut johdetut luokat käyttävät syöttö- ja lähtötoimintoihin.
2. istream:-
- istream tulee sanoista input stream.
- Tämä luokka on johdettu luokasta 'ios'.
- Tämä luokka käsittelee syöttövirtaa.
- Purkausoperaattori (>>) on ylikuormitettu tässä luokassa käsittelemään syötevirtoja tiedostoista ohjelman suorittamiseen.
- Tämä luokka ilmoittaa syötefunktiot, kuten get(), getline() ja read().
3. toisella puolella:-
- ostream tulee sanoista output stream.
- Tämä luokka on johdettu luokasta 'ios'.
- Tämä luokka käsittelee lähtövirtaa.
- Lisäysoperaattori (<<) on ylikuormitettu tässä luokassa käsittelemään ohjelman suorituksen tiedostojen tulostusvirtaa.
- Tämä luokka ilmoittaa tulosfunktiot, kuten put() ja write().
4. streambuf:-
java ohjelmoinnin alkuluvut
- Tämä luokka sisältää osoittimen, joka osoittaa puskuriin, jota käytetään tulo- ja lähtövirtojen hallintaan.
5. fstreambase:-
- Tämä luokka tarjoaa tiedostovirroille yhteisiä operaatioita. Toimii pohjana fstream-, ifstream- ja ofstream-luokille.
- Tämä luokka sisältää open()- ja close()-funktiot.
6. ifstream:-
- Tämä luokka tarjoaa syöttöoperaatioita.
- Se sisältää open()-funktion oletussyöttötilassa.
- Peri funktiot get(), getline(), read(), seekg() ja tellg() istreamista.
7. virran ulkopuolella:-
- Tämä luokka tarjoaa tulosoperaatioita.
- Se sisältää open()-funktion oletustulostustilassa.
- Peri funktiot put(), write(), seekp() ja tellp() ostreamista.
8. fstream:-
- Tämä luokka tukee samanaikaisia syöttö- ja lähtötoimintoja.
- Peri kaikki toiminnot istream- ja ostream-luokista iostreamin kautta.
9. tiedostobuf:-
- Sen tarkoitus on asettaa tiedostopuskurit lukemaan ja kirjoittamaan.
- Voimme myös käyttää tiedostopuskurin jäsentoimintoa määrittääksesi tiedoston pituuden.
C++:ssa tiedostoja käsitellään pääasiassa käyttämällä kolmea luokkaa fstream, ifstream, ofstream, jotka ovat saatavilla fstream-otsikkotiedostossa.
offstream: Striimaa luokka tiedostoihin kirjoittamista varten
ifstream: Striimaa luokka lukeaksesi tiedostoista
fstream: Suoratoista luokkaa sekä lukemiseen että kirjoittamiseen tiedostoista/tiedostoihin.

Nyt ensimmäinen askel tietyn tiedoston avaamiseksi luku- tai kirjoitustoimintoa varten. Voimme avata tiedoston
1. tiedostonimen välittäminen rakentajassa objektin luonnin yhteydessä
2. käyttämällä avointa menetelmää
Esim.
Avaa tiedosto rakentajalla
ifstream (const char* tiedostonimi, ios_base::openmode mode = ios_base::in);
ifstream fin(tiedostonimi, openmode) oletuksena openmode = ios::in
ifstream fin(tiedostonimi);Avaa tiedosto käyttämällä avointa menetelmää
Oletuskonstruktorin kutsuminen
ifstream lopussa;
fin.open(tiedostonimi, avoin tila)
fin.open(tiedostonimi);
Tilat:
| Jäsen Constant | Tarkoittaa | Pääsy |
|---|---|---|
| sisään * | syöttö | Tiedosto auki luettavaksi: sisäinen stream-puskuri tukee syöttötoimintoja. |
| ulos | ulostulo | Tiedosto auki kirjoittamista varten: sisäinen stream-puskuri tukee tulostustoimintoja. |
| binääri | binääri | Toiminnot suoritetaan binääritilassa tekstin sijaan. |
| söi | lopussa | Tulostuskohta alkaa tiedoston lopusta. |
| sovellus | liittää | Kaikki tulostustoiminnot tapahtuvat tiedoston lopussa ja liitetään sen olemassa olevaan sisältöön. |
| runko | katkaista | Kaikki tiedoston sisältö ennen sen avaamista hylätään. |
Avoimet oletustilat:
| ifstream | ios::in |
| virran ulkopuolella | ios::out |
| fstream | ios::in | ios::out |
Ongelmailmoitus : Tiedoston lukeminen ja kirjoittaminen C++:ssa.
Esimerkkejä:
Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>
Alla on toteutus käyttämällä ifstream- ja offstream-tunnit .
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;> }> |
>
>
Aika monimutkaisuus: O(n)
Aputila: O(1)
Alla on toteutus käyttämällä fstream luokka .
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;> }> |
>
>
Aika monimutkaisuus: O(n)
Aputila: 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>>nimi;> > >cout<<>'
Enter the Fee:'>;> >cin>>maksu;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '/write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>rno>>nimi>>maksu; //lukea dataa tiedostosta opiskelija fin.close(); cout<' '<' '< return 0; }> |
>
>
Aika monimutkaisuus: O(1)
Aputila: O(1)
C++
leikkaa java-joukko
// 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>>nimi>>maksu;>> >fin.close();> > >cout<' '<' '< return 0; }> |
>
>
Aika monimutkaisuus: O(1)
Aputila: O(50)