Práce se soubory prostřednictvím tříd C++

Práce se soubory prostřednictvím tříd C++

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:-

  • 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++




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 <' ' <' ' >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)