Jak číst a zapisovat do souboru v C ++

How Read Write File C

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.

#zahrnout

použ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.

#zahrnout

použ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ů.