file input output operations c
Studie operací vstupu a výstupu souboru a funkcí ukazatele souboru v C ++.
V programování v reálném čase se zabýváme velkým množstvím dat, která nelze přijmout ze standardních vstupně-výstupních zařízení. Proto musíme pro ukládání dat využívat sekundární úložiště. Pomocí sekundárního úložiště obvykle ukládáme data ve formě souborů.
Můžeme číst data ze souborů nebo zapisovat data do souborů pomocí sekvence dat nazývaných proudy buď v textovém nebo binárním formátu. V C ++ existují různé vstupy / výstupy a další operace související se soubory. Tento kurz vysvětluje tyto operace související se soubory pomocí různých tříd.
=> Navštivte zde exkluzivní sérii výukových kurzů C ++.
Co se naučíte:
Třídy vstupu / výstupu souborů v C ++
Viděli jsme třídu iostream v C ++, která definuje standardní vstupní a výstupní funkce včetně cin a cout. Tato třída je omezena na standardní vstupní a výstupní zařízení, jako je klávesnice a monitor.
Pokud jde o operace se soubory, C ++ má jinou sadu tříd, které lze použít.
Tyto třídy jsou popsány níže:
- Ofstream: Třída zpracování souborů, která označuje proud výstupního souboru a slouží k zápisu dat do souborů.
- Ifstream: Třída zpracování souborů, která označuje proud vstupního souboru a slouží ke čtení dat ze souboru.
- Fstream: Třída zpracování souborů, která má schopnost zpracovávat ifstream i ofstream. Lze jej použít ke čtení a zápisu do souboru.
V manipulaci se soubory C ++ jsou podporovány následující operace:
- Otevřít soubor
- Zavřete soubor
- Číst ze souboru
- Zápis do souboru
Podívejme se na každou z těchto operací podrobně !!
Otevřít soubor
Přiřazení objektu jedné ze tříd proudu k souboru buď pro čtení nebo zápis nebo obojí se nazývá otevření souboru. Otevřený soubor je v kódu zastoupen pomocí tohoto objektu streamu. Jakákoli operace čtení / zápisu provedená na tomto objektu streamu bude tedy použita také na fyzický soubor.
Obecná syntaxe pro otevření souboru s datovým proudem je:
void open(const char* filename, ios::open mode mode)
Tady,
název souboru => Řetězec obsahující cestu a název souboru, který se má otevřít.
mode => Volitelný parametr označující režim, ve kterém má být soubor otevřen.
C ++ podporuje různé režimy, ve kterých lze soubor otevřít. Můžeme také určit kombinaci těchto režimů pomocí operátoru OR.
převést youtube na mp3 déle než 20 minut
Režim souborů | Popis |
---|---|
ios :: in | Otevře soubor ve vstupním režimu pro čtení. |
ios :: out | Otevírá soubor ve výstupním režimu pro zápis dat do souboru. |
ios :: jedl | Nastavte počáteční polohu na konci souboru. Pokud není nastaven příznak konce souboru, je počáteční poloha nastavena na začátek souboru. |
ios :: trunc | Pokud je soubor otevřen pro zápis a již má obsah, bude obsah zkrácen. |
ios :: aplikace | Otevře soubor v režimu připojení tak, aby byl veškerý obsah připojen na konec souboru. |
ios :: binární | Otevře soubor v binárním režimu. |
Například,pokud chceme otevřít soubor „myfile.dat“ pro připojení dat v binárním režimu, můžeme napsat následující kód.
ofstream myfile;
myfile.open(“myfile.dat”, ios::out|ios::app|ios::binary);
Jak již bylo zmíněno, parametr mode je volitelný. Když otevřete soubor bez zadání druhého parametru, má otevřená členská funkce ofstream, ifstream nebo fstream výchozí režim, pomocí kterého soubor otevřete.
Jsou uvedeny následovně:
Třída | Výchozí režim |
---|---|
Ifstream | ios :: in |
ofstream | ios :: out |
Fstream | ios :: in | ios :: out |
Takže pokud nezadáme druhý parametr ve funkci open, v závislosti na použité třídě proudu, bude soubor otevřen ve výchozím režimu.
Uzavření souboru
Můžeme použít funkci zavřít k uzavření souboru a uvolnění prostředků držených souborem, když skončíme se vstupními a výstupními operacemi souboru.
Funkce pro uzavření souboru je:
void close()
Když jsme tedy hotoví s operacemi na výše uvedeném souboru myfile, můžeme soubor zavřít následovně:
myfile.close();
Jakmile je soubor uzavřen pomocí funkce zavřít, lze přidružený objekt souboru znovu použít k otevření jiného souboru.
Čtení ze souboru
Můžeme číst informace ze souboru řádek po řádku pomocí operátoru extrakce proudu (>>). Je to podobné jako při čtení vstupu ze standardního vstupu pomocí cin. Jediný rozdíl je v případě souborů, místo cin používáme objekt ifstream nebo fstream.
Ukázkový kód pro čtení ze souboru je uveden níže:
ifstream myfile; myfile.open(“samp_file.txt”); cout<<”Reading from a file”<>data; cout<Ve výše uvedeném kódu otevřeme soubor a pomocí operátoru extrakce proudu (>>) přečteme obsah souboru. Po dokončení čtení můžeme soubor zavřít.
Zápis do souboru
Můžeme také zapisovat data do souboru pomocí operací se soubory. Operátor, který používáme k zápisu dat do souboru, je operátor vkládání streamu (<<). Once again this is the same operator that we use to print data to a standard output device using cout. Difference between the two is that for file related writing we use ofstream or fstream object.
Zvažme následující příklad kódu:
char data(100); ofstream myfile; myfile.open(“samp_file.txt”); cout<<”Enter the string to be written to file”<Zde načteme řádek ze vstupu a zapíšeme ho do souboru, který byl otevřen objektem ofstream.
V níže uvedeném příkladu kódu poskytujeme ukázku všech operací zpracování souborů.
#include #include using namespace std; int main () { char data(100); // opening a file in write mode. ofstream myfile; myfile.open('E:\message.txt'); cout << 'Writing to the file' << endl; cout << 'Enter your name: '; cin.getline(data, 100); myfile << data << endl; cout <> data; cin.ignore(); myfile << data << endl; // close the opened file. myfile.close(); // opening a file in read mode. ifstream infile; infile.open('E:\message.txt'); cout << 'Reading from a file' <> data; cout << data <> data; cout << data << endl; infile.close(); return 0; }
Výstup:
Zápis do souboru
Zadejte své jméno: Ved
Zadejte svůj věk: 7
Čtení ze souboru
Podle
7
Ve výše uvedeném programu nejprve otevřete soubor v režimu zápisu. Poté načteme data, tj. Jméno a věk a zapíšeme je do souboru. Poté tento soubor zavřeme. Dále otevřeme stejný soubor v režimu čtení a načteme datový řádek po řádku ze souboru a odešleme jej na obrazovku.
hlavní rozdíly mezi c a c ++
Tento program tedy pokrývá všechny I / O operace se soubory.
Ukládejte stavové strusky
Existují některé členské funkce, které se používají ke kontrole stavu souboru. Všechny tyto funkce vracejí logickou hodnotu.
Tabulkovali jsme tyto funkce následovně:
Funkce Popis eof () Vrátí hodnotu true, pokud je při čtení souboru dosaženo konce souboru. selhat() Vrátí true, když operace čtení / zápisu selže nebo dojde k chybě formátu špatný() Vrátí hodnotu true, pokud čtení nebo zápis do souboru selže. dobrý() Vrátí hodnotu false ve stejných případech, kdy by volání kterékoli z výše uvedených funkcí vrátilo hodnotu true.
Get / Put a další speciální operace
Souborové I / O streamy, které jsme dosud viděli, mají interní pozice get a put, které jsou podobné ostatním I / O streamům jako iostream.
Třída ifstream má pozici interního get, která obsahuje umístění prvku / znaku, který se má v souboru načíst v další operaci vstupu. Třída ofstream má interní put pozici, která obsahuje umístění elementu / znaku, který má být zapsán v další výstupní operaci.
Mimochodem, fstream má jak pozici get, tak pozici put.
Abychom usnadnili čtení a zápis pomocí těchto pozic, máme několik členských funkcí, které se používají k pozorování a úpravám těchto pozic.
Níže jsou uvedeny tyto funkce:
Funkce Popis tellg () Vrátí aktuální pozici ukazatele get tellp () Vrátí aktuální pozici ukazatele put hledat (pozice) Přesune získání ukazatele na zadané umístění počítající od začátku souboru hledat (offset, směr) Přesune získání ukazatele na hodnotu offsetu vzhledem k bodu danému směrem parametru. hledat (pozice) Pohyby umístí ukazatel na určené místo počítající od začátku souboru hledat (offset, směr) Pohyby umístí ukazatel na hodnotu offsetu vzhledem k bodu danému směrem parametru.
Parametr směr uvedený ve výše uvedených funkčních prototypech je vyjmenovaný typ typu hledat a určuje bod, od kterého se počítá offset.
Může mít následující hodnoty.
ios :: prosit Odsazení od začátku streamu ios :: cur Posun od aktuální polohy ios :: konec Odsazení od konce streamu
Podívejme se na úplný příklad, který ukazuje použití těchto funkcí.
#include #include using namespace std; int main() { fstream myfile; myfile.open('E:\myfile.txt',ios::out); if(!myfile) { cout<<'Cannot create File...'; } else { cout<<'New file created'< Výstup:
Byl vytvořen nový soubor
Počáteční pozice ukazatele souboru na: 34
Po hledání (-1, ios :: cur), umístění ukazatele souboru na: 33
After seekg (5, ios :: beg), File Pointer at: 5
After seekg (1, ios :: cur), File Pointer at: 6

Jak ukazuje výše uvedený program, máme vytvořený soubor, do kterého napíšeme řádek textu. Poté pomocí různých výše popsaných funkcí zobrazíme různé pozice ukazatele souboru.
Závěr
V tomto tutoriálu jsme viděli různé operace se soubory pro otevírání, zavírání a čtení / zápis dat z / do souboru.
Také jsme viděli funkce pro změnu ukazatele souboru za účelem přístupu ke konkrétním pozicím v souboru. V našich dalších cvičeních probereme několik dalších důležitých témat souvisejících s C ++.
nejlepší bezplatný čistič a optimalizátor pc
=> Přečtěte si sérii školení Easy C ++.
Doporučené čtení
- Základní operace vstupu / výstupu v C ++
- Vstup-výstup a soubory v Pythonu (Python Open, Read and Write to File)
- Základní I / O operace v Javě (vstupní / výstupní toky)
- Manipulace se soubory v systému Unix: Přehled systému souborů Unix
- Unix speciální znaky nebo metaznaky pro manipulaci se soubory
- Unixová oprávnění pro přístup k souborům: Unix Chmod, Chown a Chgrp
- Objekty souboru VBScript: CopyFile, DeleteFile, OpenTextFile, čtení a zápis textového souboru
- Implementace Java: Vytvoření a spuštění souboru Java JAR