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 <' ' <' ' /write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>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)