Spracovanie súborov prostredníctvom tried C++

Spracovanie súborov prostredníctvom tried C++

Manipulácia so súbormi sa používa na trvalé uloženie údajov v počítači. Pomocou manipulácie so súbormi môžeme ukladať naše dáta do sekundárnej pamäte (pevný disk).
Ako dosiahnuť Manipuláciu so súbormi
Aby sme dosiahli spracovanie súborov, musíme postupovať podľa nasledujúcich krokov: -
KROK 1 – Pomenovanie súboru
KROK 2-Otvorenie súboru
KROK 3-Zápis údajov do súboru
KROK 4 – Načítanie údajov zo súboru
KROK 5-Zatvorenie súboru.

Streamy v C++ :-

Dáme vstup vykonávajúcemu programu a vykonávací program vráti výstup. Postupnosť bajtov zadaná ako vstup vykonávanému programu a postupnosť bajtov, ktorá prichádza ako výstup vykonávaného programu, sa nazývajú prúd. Inými slovami, toky nie sú nič iné ako tok údajov v sekvencii.

Vstupná a výstupná operácia medzi vykonávaným programom a zariadeniami, ako je klávesnica a monitor, sú známe ako vstupno-výstupná operácia konzoly. Vstupná a výstupná operácia medzi vykonávaným programom a súbormi je známa ako disková vstupno-výstupná operácia.

Triedy pre operácie s prúdom súborov:-

I/O systém jazyka C++ obsahuje sadu tried, ktoré definujú metódy spracovania súborov. Patria sem triedy ifstream, ofstream a fstream. Tieto triedy sú odvodené z fstream a z príslušnej triedy iostream. Tieto triedy, určené na správu súborov na disku, sú deklarované vo fstream, a preto musíme tento súbor zahrnúť do akéhokoľvek programu, ktorý používa súbory.
1. ios:-

  • ios znamená vstupný výstupný tok.
  • Táto trieda je základnou triedou pre ostatné triedy v tejto hierarchii tried.
  • Táto trieda obsahuje potrebné prostriedky, ktoré používajú všetky ostatné odvodené triedy na vstupné a výstupné operácie.

2. istream:-

  • istream znamená vstupný prúd.
  • Táto trieda je odvodená od triedy „ios“.
  • Táto trieda spracováva vstupný tok.
  • Operátor extrakcie (>>) je v tejto triede preťažený, aby spracoval vstupné prúdy zo súborov do vykonávania programu.
  • Táto trieda deklaruje vstupné funkcie ako get(), getline() a read().

3. na druhej strane:

  • ostream znamená výstupný prúd.
  • Táto trieda je odvodená od triedy „ios“.
  • Táto trieda spracováva výstupný prúd.
  • Operátor vkladania ( < <) je v tejto triede preťažený, aby spracoval výstupné prúdy do súborov z vykonávania programu.
  • Táto trieda deklaruje výstupné funkcie ako put() a write().

4. streambuf:-

  • Táto trieda obsahuje ukazovateľ, ktorý ukazuje na vyrovnávaciu pamäť, ktorá sa používa na správu vstupných a výstupných tokov.

5. fstreambase:-

  • Táto trieda poskytuje operácie spoločné pre prúdy súborov. Slúži ako základ pre triedu fstream, ifstream a ofstream.
  • Táto trieda obsahuje funkcie open() a close().

6. ifstream:-

  • Táto trieda poskytuje vstupné operácie.
  • Obsahuje funkciu open() s predvoleným režimom vstupu.
  • Zdedí funkcie get(), getline(), read(), seekg() a tellg() z istreamu.

7. ofstream:-

  • Táto trieda poskytuje výstupné operácie.
  • Obsahuje funkciu open() s predvoleným výstupným režimom.
  • Dedí funkcie put(), write(), seekp() a tellp() z ostreamu.

8. fstream:-

  • Táto trieda poskytuje podporu pre simultánne vstupné a výstupné operácie.
  • Zdedí všetky funkcie z tried istream a ostream cez iostream.

9. filebuf:-

  • Jeho účelom je nastaviť vyrovnávacie pamäte súborov na čítanie a zápis.
  • Na určenie dĺžky súboru môžeme použiť aj členskú funkciu vyrovnávacej pamäte súboru.

V C++ sú súbory spracovávané hlavne pomocou troch tried fstream, ifstream, ofstream dostupných v hlavičkovom súbore fstream.
ofstream: Streamujte triedu na zapisovanie do súborov
ifstream: Streamujte triedu na čítanie zo súborov
fstream: Streamujte triedu na čítanie a zápis do/do súborov.

Teraz je prvým krokom otvorenie konkrétneho súboru na operáciu čítania alebo zápisu. Súbor môžeme otvoriť pomocou
1. odovzdanie názvu súboru v konštruktore v čase vytvorenia objektu
2. pomocou otvorenej metódy

Pre napr.

Otvorte súbor pomocou konštruktora
ifstream (const char* názov súboru, ios_base::režim otvoreného režimu = ios_base::in);
ifstream fin (názov súboru, otvorený režim) štandardne otvorený režim = ios::in
ifstream fin (názov súboru);

Otvorte súbor pomocou metódy otvorenia
Volanie predvoleného konštruktora
ifstream koniec;
fin.open(názov súboru, otvorený režim)
fin.open(názov súboru);

Režimy:

Člen Konštantný Znamenať Prístup
v * vstup Súbor otvorený na čítanie: interná vyrovnávacia pamäť streamu podporuje vstupné operácie.
von výkon Súbor otvorený na zápis: interná vyrovnávacia pamäť streamu podporuje výstupné operácie.
binárne binárne Operácie sa vykonávajú v binárnom režime a nie v textovom režime.
jedol na konci Výstupná pozícia začína na konci súboru.
aplikácie priložiť Všetky výstupné operácie sa uskutočňujú na konci súboru a pripájajú sa k jeho existujúcemu obsahu.
kmeň skrátiť Všetok obsah, ktorý existoval v súbore pred jeho otvorením, sa zahodí.

Predvolené otvorené režimy:

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

Vyhlásenie o probléme : Na čítanie a zápis súboru v C++.
Príklady:

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

Nižšie je uvedená implementácia pomocou triedy ifstream a 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;> }>

Časová zložitosť: O(n)
Pomocný priestor: O(1)

Nižšie je uvedená implementácia pomocou trieda fstream .

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

Časová zložitosť: O(n)
Pomocný priestor: 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>>meno;> > > cout < <> ' Enter the Fee:'> ;> > cin>>poplatok;> > > ofstream fout(> 'd:/student.doc'> );> > > fout <' ' <' ' >rno>>meno>>poplatok; //prečítanie údajov zo súboru student fin.close(); cout <' ' <' ' < return 0; }>

Časová zložitosť: O(1)
Pomocný priestor: 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>>meno>>poplatok;> //read data from the file student> > > fin.close();> > > cout <' ' <' ' < return 0; }>

Časová zložitosť: O(1)
Pomocný priestor: O(50)