V tomto článku vám pomocí několika příkladů ukážeme, jak číst a zapisovat do souboru v programovacím jazyce C ++. Abychom porozuměli operacím se soubory C ++, jako je čtení a zápis, musíme nejprve porozumět konceptu proudu v C ++.
Co je to stream?
Stream je jednoduše tok dat nebo znaků. Existují dva typy streamů: vstupní toky a výstupní toky. Vstupní proud se používá ke čtení dat z externího vstupního zařízení, jako je klávesnice, zatímco výstupní tok se používá k zápisu dat na externí výstupní zařízení, jako je monitor. Soubor lze považovat za vstupní i výstupní zdroj.
V C ++ používáme stream k odesílání nebo přijímání dat do nebo z externího zdroje.
K přístupu ke vstupnímu/výstupnímu proudu, tj. Ios, můžeme použít vestavěné třídy.
Zde je hierarchie tříd streamů programovacího jazyka C ++:
Objekty cin a cout slouží ke čtení dat z klávesnice a k zobrazení výstupu na monitoru. Kromě toho ifstream, což je zkratka pro tok vstupních souborů, se používá ke čtení proudu dat ze souboru, a ofstream, což je zkratka pro výstupní proud souboru, se používá k zápisu proudu dat do souboru.
Soubor iostram.h obsahuje všechny požadované standardní třídy vstupních/výstupních proudů v programovacím jazyce C ++.
Příklady
Nyní, když rozumíte základům streamů, probereme následující příklady, které vám pomohou lépe porozumět operacím se soubory v C ++:
- Příklad 1: Otevřít a zavřít soubor
- Příklad 2: Zápis do souboru
- Příklad 3: Čtení ze souboru
- Příklad 4: Čtení a zápis do souboru
- Příklad 5: Čtení a zápis do binárního souboru
Příklad 1: Otevřít a zavřít soubor
V tomto ukázkovém programu si ukážeme, jak otevřít/vytvořit soubor a jak jej zavřít v C ++. Jak vidíte v níže uvedeném programu, zahrnuli jsme knihovnu potřebnou pro operace se soubory.
K otevření a zavření souboru potřebujeme objekt ofstream. Potom, abychom mohli číst nebo zapisovat do souboru, musíme soubor otevřít. Zahrnuli jsme soubor záhlaví fstream na řádek číslo 1, abychom měli přístup k třídě stream.
Deklarovali jsme myFile_Handler jako objekt ofstream uvnitř hlavní funkce. Můžeme pak použít funkci open () k vytvoření prázdného souboru a funkci close () k zavření souboru.
#zahrnoutpoužitím jmenný prostorhodiny;
inthlavní()
{
ofstream myFile_Handler;
// Soubor otevřený
myFile_Handler.otevřeno('File_1.txt');
// Zavření souboru
myFile_Handler.zavřít();
vrátit se 0;
}
Nyní zkompilováme program a prozkoumáme výstup. Jak vidíte v okně výstupu níže, soubor File_1.txt byl vytvořen po spuštění programu. Velikost souboru je nulová, protože jsme do souboru nenapsali žádný obsah.
Příklad 2: Zápis do souboru
V předchozím ukázkovém programu jsme vám ukázali, jak otevřít soubor a jak jej zavřít. Nyní vám ukážeme, jak něco napsat do souboru.
Můžeme zapisovat do souboru pomocí operátoru vložení proudu, tj.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.
#zahrnoutpoužitím jmenný prostorhodiny;
inthlavní()
{
ofstream myFile_Handler;
// Soubor otevřený
myFile_Handler.otevřeno('File_1.txt');
// Zapis do souboru
myFile_Handler<< 'Toto je ukázkový testovací soubor.' ' <<endl;
myFile_Handler<< 'Toto je druhý řádek souboru.' ' <<endl;
// Zavření souboru
myFile_Handler.zavřít();
vrátit se 0;
}
Nyní zkomplikujeme výše uvedený program a spustíme jej. Jak vidíte níže, úspěšně jsme se zapsali do souboru File_1.txt.
Příklad 3: Čtení ze souboru
V předchozích příkladech jsme vám ukázali, jak zapisovat obsah do souboru. Nyní si přečteme obsah ze souboru, který jsme vytvořili v příkladu-2, a zobrazíme obsah na standardním výstupním zařízení, tj. Na monitoru.
Pomocí funkce getline () načteme celý řádek ze souboru a poté cout vytiskneme řádek na monitor.
#zahrnout#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
inthlavní()
{
ifstream myFile_Handler;
řetězec myLine;
// Soubor otevřený v režimu čtení
myFile_Handler.otevřeno('File_1.txt');
-li(myFile_Handler.je otevřeno())
{
// Pokračujte ve čtení souboru
zatímco(getline(myFile_Handler, myLine))
{
// vytiskněte řádek na standardní výstup
náklady <<myLine<<endl;
}
// Zavření souboru
myFile_Handler.zavřít();
}
jiný
{
náklady << 'Soubor nelze otevřít!';
}
vrátit se 0;
}
Nyní vytiskneme obsah souboru File_1.txt pomocí následujícího příkazu: cat File_1.txt. Jakmile program zkomplikujeme a spustíme, je jasné, že výstup odpovídá obsahu souboru. Proto jsme soubor úspěšně přečetli a obsah souboru vytiskli na monitor.
Příklad 4: Čtení a zápis do souboru
Doposud jsme vám ukázali, jak otevřít, číst, psát a zavírat soubor. V C ++ můžeme také číst a zapisovat do souboru současně. Abychom mohli číst i zapisovat do souboru, musíme získat objekt fstream a otevřít soubor v režimu ios :: in a ios :: out.
V tomto případě nejprve zapíšeme do souboru nějaký obsah. Poté načteme data ze souboru a vytiskneme je na monitor.
#zahrnout#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
inthlavní()
{
fstream myFile_Handler;
řetězec myLine;
// Soubor otevřený
myFile_Handler.otevřeno('File_1.txt', ios::v |ios::ven);
// Zkontrolujte, zda se soubor otevřel
-li(!myFile_Handler)
{
náklady << 'Soubor se neotevřel!';
výstup(1);
}
// Zapis do souboru
myFile_Handler<< „1. Toto je další ukázkový testovací soubor. ' <<endl;
myFile_Handler<< „2. Toto je druhý řádek souboru. ' <<endl;
myFile_Handler.hledat(ios::žebrat);
// Přečíst soubor
-li(myFile_Handler.je otevřeno())
{
// Pokračujte ve čtení souboru
zatímco(getline(myFile_Handler, myLine))
{
// vytiskněte řádek na standardní výstup
náklady <<myLine<<endl;
}
// Zavření souboru
myFile_Handler.zavřít();
}
jiný
{
náklady << 'Soubor nelze otevřít!';
}
myFile_Handler.zavřít();
vrátit se 0;
}
Nyní program zkompilováme a spustíme.
Příklad 5: Čtení a zápis do binárního souboru
V tomto případě se chystáme deklarovat třídu a poté zapsat objekt do binárního souboru. Abychom tento příklad zjednodušili, deklarovali jsme třídu Zaměstnanec s veřejnou proměnnou emp_id. Poté přečteme binární soubor a vytiskneme výstup na monitor.
#zahrnout#zahrnout
použitím jmenný prostorhodiny;
třídaZaměstnanec
{
veřejnost:
intemp_id;
};
inthlavní()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;
Zaměstnanec empObj_W, empObj_R;
// Soubor otevřený
binOutFile_Handler.otevřeno('employee.dat', ios::ven |ios::binární);
// Zkontrolujte, zda se soubor otevřel
-li(!binOutFile_Handler)
{
náklady << 'Soubor se neotevřel!';
výstup(1);
}
// Inicializace empObj_W
empObj_W.emp_id = 1512;
// Zapis do souboru
binOutFile_Handler.napsat((char *) &empObj_W,velikost(Zaměstnanec));
binOutFile_Handler.zavřít();
-li(!binOutFile_Handler.dobrý())
{
náklady << 'Při zápisu binárního souboru došlo k chybě!' <<endl;
výstup(2);
}
// Nyní si přečteme soubor employee.dat
binInFile_Handler.otevřeno('employee.dat', ios::v |ios::binární);
// Zkontrolujte, zda se soubor otevřel
-li(!binInFile_Handler)
{
náklady << 'Soubor se neotevřel!';
výstup(3);
}
// Přečíst obsah binárního souboru
binInFile_Handler.číst((char *) &empObj_R,velikost(Zaměstnanec));
binInFile_Handler.zavřít();
-li(!binInFile_Handler.dobrý())
{
náklady << 'Při čtení binárního souboru došlo k chybě!' <<endl;
výstup(4);
}
// Vytiskněte výstup empObj_R
náklady << „Podrobnosti o zaměstnanci:“ <<endl;
náklady << 'ID zaměstnance:' <<empObj_R.emp_id <<endl;
vrátit se 0;
}
Závěr
Soubory se používají hlavně k ukládání dat a hrají důležitou roli v programování v reálném světě. V tomto článku jsme vám ukázali, jak používat různé operace se soubory s programovacím jazykem C ++, pomocí několika příkladů. Dále jsme vám ukázali, jak číst a zapisovat data do textových i binárních souborů.