Manipulace se soubory se používá k trvalému ukládání dat v počítači. Pomocí manipulace se soubory můžeme ukládat naše data do sekundární paměti (Hard disk).
Jak dosáhnout Manipulace se soubory
Abychom dosáhli zpracování souborů, musíme provést následující kroky: -
KROK 1-Pojmenování souboru
KROK 2-Otevření souboru
KROK 3-Zápis dat do souboru
KROK 4-Čtení dat ze souboru
KROK 5-Uzavření souboru.
Streamy v C++ :-
Zadáme vstup vykonávajícímu programu a prováděcí program vrátí výstup. Posloupnost bajtů zadaná jako vstup do spouštěcího programu a posloupnost bajtů, která přichází jako výstup spouštěného programu, se nazývá proud. Jinými slovy, proudy nejsou nic jiného než tok dat v sekvenci.
Operace vstupu a výstupu mezi spouštěným programem a zařízeními, jako je klávesnice a monitor, jsou známé jako operace I/O konzoly. Vstupní a výstupní operace mezi spouštěným programem a soubory jsou známé jako disková I/O operace.
Třídy pro operace souborového streamu:-
I/O systém C++ obsahuje sadu tříd, které definují metody zpracování souborů. Patří mezi ně třídy ifstream, ofstream a fstream. Tyto třídy jsou odvozeny z fstream az odpovídající třídy iostream. Tyto třídy určené ke správě souborů na disku jsou deklarovány ve fstream, a proto musíme tento soubor zahrnout do jakéhokoli programu, který používá soubory.
1. ios:-
- ios je zkratka pro vstupní výstupní proud.
- Tato třída je základní třídou pro ostatní třídy v této hierarchii tříd.
- Tato třída obsahuje nezbytné funkce, které používají všechny ostatní odvozené třídy pro vstupní a výstupní operace.
2. istream:-
- istream je zkratka pro vstupní proud.
- Tato třída je odvozena od třídy „ios“.
- Tato třída zpracovává vstupní proud.
- Operátor extrakce (>>) je v této třídě přetížen, aby zpracoval vstupní proudy ze souborů do provádění programu.
- Tato třída deklaruje vstupní funkce jako get(), getline() a read().
3. na druhé straně:
- ostream znamená výstupní proud.
- Tato třída je odvozena od třídy „ios“.
- Tato třída zpracovává výstupní proud.
- Operátor vložení (<<) je v této třídě přetížen, aby zpracoval výstupní proudy do souborů z provádění programu.
- Tato třída deklaruje výstupní funkce, jako je put() a write().
4. streambuf:-
velbloudí krajta
- Tato třída obsahuje ukazatel, který ukazuje na vyrovnávací paměť, která se používá ke správě vstupních a výstupních toků.
5. fstreambase:-
- Tato třída poskytuje operace společné pro souborové proudy. Slouží jako základ pro třídu fstream, ifstream a ofstream.
- Tato třída obsahuje funkce open() a close().
6. ifstream:-
- Tato třída poskytuje vstupní operace.
- Obsahuje funkci open() s výchozím režimem zadávání.
- Dědí funkce get(), getline(), read(), seekg() a tellg() z istreamu.
7. ofstream:-
- Tato třída poskytuje výstupní operace.
- Obsahuje funkci open() s výchozím výstupním režimem.
- Dědí funkce put(), write(), seekp() a tellp() z ostreamu.
8. fstream:-
- Tato třída poskytuje podporu pro simultánní vstupní a výstupní operace.
- Dědí všechny funkce z tříd istream a ostream přes iostream.
9. filebuf:-
- Jeho účelem je nastavit vyrovnávací paměti souborů pro čtení a zápis.
- Můžeme také použít členskou funkci vyrovnávací paměti souboru k určení délky souboru.
V C++ jsou soubory zpracovávány hlavně pomocí tří tříd fstream, ifstream, ofstream dostupných v záhlaví fstreamfile.
ofstream: Streamujte třídu pro zápis do souborů
ifstream: Streamujte třídu ke čtení ze souborů
fstream: Streamujte třídu pro čtení i zápis z/do souborů.

Nyní první krok k otevření konkrétního souboru pro operaci čtení nebo zápisu. Můžeme otevřít soubor pomocí
1. předání názvu souboru v konstruktoru v době vytvoření objektu
2. pomocí otevřené metody
Pro např.
Otevřete soubor pomocí konstruktoru
ifstream (const char* název souboru, ios_base::režim otevřeného režimu = ios_base::in);
ifstream fin(název souboru, otevřený režim) ve výchozím nastavení openmode = ios::in
ifstream fin(název souboru);Otevřete soubor pomocí metody open
Volání výchozího konstruktoru
ifstream end;
fin.open(název souboru, otevřený režim)
fin.open(název souboru);
Režimy:
| Člen Konstanta | Stojí za | Přístup |
|---|---|---|
| v * | vstup | Soubor otevřený pro čtení: interní vyrovnávací paměť streamu podporuje vstupní operace. |
| ven | výstup | Soubor otevřený pro zápis: vnitřní vyrovnávací paměť streamu podporuje výstupní operace. |
| binární | binární | Operace se provádějí v binárním režimu, nikoli v textovém režimu. |
| jedl | na konci | Výstupní pozice začíná na konci souboru. |
| aplikace | připojit | Všechny výstupní operace probíhají na konci souboru a připojují se k jeho stávajícímu obsahu. |
| kmen | zkrátit | Veškerý obsah, který v souboru existoval před jeho otevřením, bude zahozen. |
Výchozí otevřené režimy:
| ifstream | ios::in |
| ofstream | ios::out |
| fstream | ios::in | ios::out |
Problémové prohlášení : Čtení a zápis souboru v C++.
Příklady:
Input : Welcome in techcodeview.com. Best way to learn things. -1 Output : Welcome in techcodeview.com. Best way to learn things.>
Níže je implementace pomocí třídy 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á složitost: O(n)
Pomocný prostor: O(1)
Níže je implementace pomocí třída 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á složitost: O(n)
Pomocný prostor: O(1)
C++
jak velká je obrazovka mého počítače
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>>jméno;> > >cout<<>'
Enter the Fee:'>;> >cin>>poplatek;> > >ofstream fout(>'d:/student.doc'>);> > >fout<' '<' '/write data to the file student fout.close(); ifstream fin('d:/student.doc'); fin>>rno>>název>>poplatek; //přečtení dat ze souboru student fin.close(); cout<' '<' '< return 0; }> |
>
>
Časová složitost: O(1)
Pomocný prostor: 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>>název>>poplatek;>//read data from the file student> > >fin.close();> > >cout<' '<' '< return 0; }> |
>
>
Časová složitost: O(1)
Pomocný prostor: O(50)