Zpracování souborů C ++: Jak otevírat, psát, číst a zavírat soubory v C ++

Co je to zacházení se soubory v C ++?

Soubory ukládají data trvale na úložné zařízení. Při zpracování souborů lze výstup z programu uložit do souboru. V souboru lze provádět různé operace.

Stream je abstrakce zařízení, kde se provádějí operace vstupu/výstupu. Stream můžete reprezentovat buď jako cíl, nebo jako zdroj znaků neurčité délky. To bude určeno jejich použitím. C ++ vám poskytuje knihovnu, která je dodávána s metodami pro zpracování souborů. Pojďme to prodiskutovat.

V tomto kurzu C ++ se naučíte:

Fstreamová knihovna

Knihovna fstream poskytuje programátorům C ++ tři třídy pro práci se soubory. Tyto třídy zahrnují:

  • proudu - Tato třída představuje výstupní proud. Používá se pro vytváření souborů a zápis informací do souborů.
  • ifstream - Tato třída představuje vstupní proud. Slouží ke čtení informací z datových souborů.
  • fstream - Tato třída obecně představuje datový proud souboru. Dodává se s funkcemi ofstream/ifstream. To znamená, že je schopen vytvářet soubory, zapisovat do souborů, číst z datových souborů.

Následující obrázek usnadňuje pochopení:

fstream knihovna



Chcete -li použít výše uvedené třídy knihovny fstream, musíte ji zahrnout do svého programu jako soubor záhlaví. Samozřejmě použijete směrnici preprocesoru #include. Musíte také zahrnout soubor záhlaví iostream.

Jak otevřít soubory

Před provedením jakékoli operace se souborem ho musíte nejprve otevřít. Pokud potřebujete do souboru zapsat, otevřete jej pomocí objektů fstream nebo ofstream. Pokud potřebujete pouze číst ze souboru, otevřete jej pomocí objektu ifstream.

Tyto tři objekty, tj. Fstream, ofstream a ifstream, mají v sobě definovanou funkci open (). Funkce přebírá tuto syntaxi: | _+_ |

  • Parametr název_souboru označuje název souboru, který se má otevřít.
  • Parametr mode je volitelný. Může mít některou z následujících hodnot:
Hodnota Popis
ios :: aplikaceRežim připojení. Výstup odeslaný do souboru je k němu připojen.
ios :: jedlOtevře soubor pro výstup a poté přesune ovládací prvek pro čtení a zápis na konec souboru.
ios :: inOtevře soubor pro čtení.
ios :: venOtevře soubor pro zápis.
ios :: kufrPokud soubor existuje, prvky souboru by měly být zkráceny před jeho otevřením.

Je možné použít dva režimy současně. Zkombinujete je pomocí | (NEBO) operátor.

Příklad 1:

 open (file_name, mode); 

Výstup:

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Chcete -li používat jeho funkce, zahrňte do programu soubor záhlaví iostream.
  2. Chcete -li používat jeho třídy, zahrňte do programu soubor záhlaví fstream.
  3. Zahrňte obor názvů std do našeho kódu, abyste mohli používat jeho třídy, aniž byste jej volali.
  4. Zavolejte funkci main (). Logika programu by měla jít do jejího těla.
  5. Vytvořte objekt třídy fstream a dejte mu jméno my_file.
  6. Chcete -li vytvořit nový soubor, použijte funkci open () na výše uvedený objekt. Režim out nám umožňuje zapisovat do souboru.
  7. Pomocí příkazu if zkontrolujte, zda se vytvoření souboru nezdařilo.
  8. Zpráva k tisku na konzole, pokud soubor nebyl vytvořen.
  9. Konec textu příkazu if.
  10. Pomocí příkazu else uveďte, co dělat, pokud byl soubor vytvořen.
  11. Zpráva k tisku na konzole, pokud byl soubor vytvořen.
  12. Chcete -li soubor zavřít, použijte na objekt funkci close ().
  13. Konec textu příkazu else.
  14. Pokud program proběhne úspěšně, musí vrátit hodnotu.
  15. Konec těla hlavní () funkce.

Jak zavřít soubory

Jakmile se program C ++ ukončí, automaticky

  • spláchne potoky
  • uvolní přidělenou paměť
  • zavírá otevřené soubory.

Jako programátor byste se však měli naučit zavírat otevřené soubory před ukončením programu.

Objekty fstream, ofstream a ifstream mají funkci close () pro zavírání souborů. Funkce přebírá tuto syntaxi: | _+_ |

Jak zapisovat do souborů

Můžete psát do souboru přímo z vašeho programu C ++. Používáte operátor vložení streamu (<<) for this. The text to be written to the file should be enclosed within double-quotes.

Pojďme si to ukázat.

Příklad 2:

 #include #include using namespace std; int main() { fstream my_file; my_file.open('my_file', ios::out); if (!my_file) { cout << 'File not created!'; } else { cout << 'File created successfully!'; my_file.close(); } return 0; } 

Výstup :

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Chcete -li používat jeho funkce, zahrňte do programu soubor záhlaví iostream.
  2. Chcete -li používat jeho třídy, zahrňte do programu soubor záhlaví fstream.
  3. Zahrňte obor názvů std do programu, abyste mohli používat jeho třídy, aniž byste jej volali.
  4. Zavolejte funkci main (). Programová logika by měla být přidána do těla této funkce.
  5. Vytvořte instanci třídy fstream a pojmenujte ji my_file.
  6. Pomocí funkce open () vytvořte nový soubor s názvem my_file.txt. Soubor se otevře ve výstupním režimu pro zápis do něj.
  7. Pomocí příkazu if zkontrolujte, zda nebyl soubor otevřen.
  8. Pokud se soubor neotevře, vytiskne se text na konzole.
  9. Konec textu příkazu if.
  10. Pomocí příkazu else uveďte, co dělat, pokud byl soubor vytvořen.
  11. Text k tisku na konzole, pokud byl soubor vytvořen.
  12. Do vytvořeného souboru napište nějaký text.
  13. K zavření souboru použijte funkci close ().
  14. Konec textu příkazu else.
  15. Po úspěšném dokončení musí program vrátit hodnotu.
  16. Konec těla funkce main ().

Jak číst ze souborů

Informace ze souborů můžete číst do svého programu C ++. To je možné pomocí operátoru extrakce proudu (>>). Operátora používáte stejným způsobem, jakým jej používáte ke čtení vstupů uživatelů z klávesnice. Místo použití objektu cin však použijete objekt ifstream/ fstream.

Příklad 3:

 void close(); 

Výstup:

Žádný takový soubor

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Chcete -li používat jeho funkce, zahrňte do programu soubor záhlaví iostream.
  2. Chcete -li používat jeho třídy, zahrňte do programu soubor záhlaví fstream.
  3. Zahrňte obor názvů std do programu, abyste mohli používat jeho třídy, aniž byste jej volali.
  4. Zavolejte funkci main (). Programová logika by měla být přidána do těla této funkce.
  5. Vytvořte instanci třídy fstream a pojmenujte ji my_file.
  6. Pomocí funkce open () vytvořte nový soubor s názvem my_file.txt. Soubor bude otevřen v režimu pro čtení z něj.
  7. Pomocí příkazu if zkontrolujte, zda soubor neexistuje.
  8. Text k tisku na konzole, pokud soubor není nalezen.
  9. Konec textu příkazu if.
  10. Pomocí příkazu else uveďte, co dělat, pokud je soubor nalezen.
  11. Vytvořte proměnnou char s názvem ch.
  12. Vytvořte smyčku while pro iteraci obsahu souboru.
  13. Zapište/uložte obsah souboru do proměnné ch.
  14. Použijte if podmínku a funkci eof (), tj. Konec souboru, abyste zajistili, že kompilátor bude pokračovat ve čtení ze souboru, pokud není dosaženo konce.
  15. Po dosažení konce zastavte čtení ze souboru pomocí příkazu break.
  16. Vytiskněte obsah proměnné ch na konzole.
  17. Tělo na konci chvíle.
  18. Konec textu příkazu else.
  19. Zavřete soubor zavřením funkce close ().
  20. Po úspěšném dokončení musí program vrátit hodnotu.
  21. Konec těla funkce main ().

Souhrn:

  • Při zpracování souborů lze výstup programu odeslat a uložit do souboru.
  • V souboru pak lze použít řadu operací.
  • Stream je abstrakce, která představuje zařízení, kde se provádějí operace vstupu/výstupu.
  • Stream lze reprezentovat buď jako cíl, nebo jako zdroj znaků na neurčitou délku.
  • Knihovna fstream poskytuje programátorům C ++ metody pro zpracování souborů.
  • Chcete -li knihovnu používat, musíte ji zahrnout do svého programu pomocí direktivy #include preprocessor.