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:-
znak na int v jazyku Java
- 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; }> |
>
linuxová architektúra
>
Č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)