Napíšte binárny súbor v C++

Napiste Binarny Subor V C



V programovaní C++ je práca s binárnymi súbormi základom pre ukladanie a manipuláciu s nespracovanými údajmi. Či už pracujete s obrázkami, zvukovými súbormi alebo vlastnými dátovými štruktúrami, schopnosť efektívneho zápisu binárnych súborov je kľúčová. Binárne súbory ukladajú údaje vo formáte, ktorý nie je čitateľný pre ľudí, vďaka čomu sú vhodné pre rôzne aplikácie, ako je ukladanie zložitých štruktúr, obrázkov alebo akýchkoľvek údajov, ktoré nesledujú jednoduchú textovú reprezentáciu.

C++ poskytuje knižnicu na interakciu s binárnymi súbormi, najmä s triedou „ofstream“, na zapisovanie binárnych údajov. Táto schopnosť umožňuje vývojárom bezproblémovo vytvárať, upravovať a spravovať binárne súbory. Tento článok skúma rôzne metódy a techniky na písanie binárnych súborov v C++, objasňuje ich aplikácie a prípady použitia.

Napíšte binárny súbor pomocou C++

Na uloženie údajov do binárneho súboru pomocou C++ sa používa metóda write(). Táto funkcia zapíše špecifikovaný počet bajtov do určeného toku, počnúc umiestnením ukazovateľa „put“. Ak je ukazovateľ „put“ na konci, súbor sa rozšíri. Nové údaje však prepíšu existujúce znaky, ak sa ukazovateľ nachádza v súbore. V prípade chyby počas procesu zápisu je stream označený ako v chybovom stave. Teraz prejdime na príklady, aby sme sa naučili písať do binárneho súboru pomocou niektorých jednoduchých a vstavaných funkcií C++.







Metóda 1: Zápis binárnych súborov so štruktúrovanými údajmi

V mnohých prípadoch možno budete musieť zapísať štruktúrované údaje, ako napríklad vlastné štruktúry, do binárneho súboru. Uvažujme o príklade, ktorý obsahuje záznam osoby, ktorá obsahuje meno, výšku a vek osoby. Pozrite si nasledujúci daný kód a pozrite si vysvetlenie:



#include

#include

štrukturovať Osoba {

char názov [ päťdesiat ] ;

int Vek ;

dvojitý výška ;

} ;

int Hlavná ( ) {

std :: ofstream outFile ( 'people.bin' , std :: ios :: binárne ) ;

ak ( ! outFile. je otvorené ( ) ) {

std :: cerr << 'Chyba! Nie je možné otvoriť súbor na zápis!' << std :: endl ;

vrátiť 1 ;

}

Osoba osoba 1 = { 'Kalsoom Ilyas' , 25 , 1,75 } ;

Osoba osoba 2 = { 'Kalsoom Bajwa' , 30 , 1,68 } ;

outFile. písať ( reinterpret_cast < char *> ( & osoba 1 ) , veľkosť ( osoba 1 ) ) ;

outFile. písať ( reinterpret_cast < char *> ( & osoba2 ) , veľkosť ( osoba2 ) ) ;

outFile. Zavrieť ( ) ;

std :: cout << 'Záznam osoby je úspešne zapísaný do binárneho súboru.' << std :: endl ;

vrátiť 0 ;

}

Tu je rozpis kódu s konkrétnymi podrobnosťami. Program začína definovaním vlastnej štruktúry s názvom „Person“. Má tri polia: meno, vek a výšku. Podrobnosti o týchto poliach sú nasledovné:



  • názov: Reťazec na uloženie mena osoby (až 50 znakov)
  • Vek: Celé číslo na uloženie veku osoby
  • výška: Dvojité na uloženie výšky osoby

Po definovaní štruktúry „Person“ sa spustí hlavná funkcia, ktorá je vstupným bodom programu. Prvý riadok v hlavnom programe otvorí súbor s názvom „people.bin“. Používame „std::ofstream“ na vytvorenie súboru s názvom „people.bin“ na zápis údajov v binárnom formáte. Kontrola, či sa súbor úspešne otvorí, je veľmi dôležitá. V opačnom prípade sa zobrazí chybové hlásenie a program sa zastaví. Preto pomocou podmienky „if“ a funkcie is_open() skontrolujeme, či sa súbor úspešne otvoril alebo nie.





Tu sa vytvoria dva objekty „Osoba“. Definujeme dve premenné „person1“ a „person2“ typu „Person“. Premenným priradíme názov, vek a výšku pre „Kalsoom Ilyas“ a „Kalsoom Bajwa“.

Teraz, keď máme dáta na zápis do binárneho súboru, vykonajte skutočnú funkciu pomocou funkcie write(). Používame „outFile.write“ na zápis obsahu každého objektu „Person“ do súboru. Funkcie „reinterpret_cast(&person1)“ a „reinterpret_cast(&person2)“ konvertujú celú štruktúru „Person“ (vrátane všetkých jej polí) na súvislý prúd bajtov, ktorý je vhodný na zápis do binárneho súboru. . Veľkosť každého objektu „Person“ zapisujeme pomocou „veľkosť(osoba1)“ a „veľkosť(osoba2)“, aby sme zabezpečili, že všetky údaje sú zapísané správne.



Po zapísaní údajov do súboru je veľmi dôležité ho správne zatvoriť, aby sa žiadne údaje nestratili v dôsledku inej funkcie. Používame outFile.close() na uvoľnenie zdrojov, ktoré sú priradené k súboru, a na zabezpečenie presného zápisu údajov. Nakoniec vytlačíme správu, ktorá potvrdí úspešné zapísanie údajov do binárneho súboru.

Ak si tento príklad vysvetlíme jednoduchšie, predstavme si špeciálny zápisník, do ktorého je možné uložiť iba informácie o ľuďoch v tajnom jazyku. Tento kód vytvára plán na usporiadanie informácií (meno, vek, výška). Otvorí zápisník, vyplní profily pre dvoch ľudí, preloží informácie do tajného jazyka a zapíše ich úhľadne dovnútra. Potom bezpečne zatvorí notebook a zachová profily pre budúce použitie. Pozrite si výstup programu, ktorý je uvedený na nasledujúcej snímke:

Metóda 2: Zápis celých čísel do binárneho súboru

Pri tejto metóde sa pole celých čísel zapíše do binárneho súboru s názvom „integers.bin“. „reinterpret_cast“ zaobchádza s celočíselným poľom ako s postupnosťou znakov (bajtov) na zápis do súboru. Toto je obzvlášť dôležité, pretože binárne súbory pracujú s nespracovanými bajtovými údajmi. Pozrime sa na nasledujúci jednoduchý príklad:

#include

#include

int Hlavná ( ) {

std :: ofstream outFile ( 'integers.bin' , std :: ios :: binárne ) ;

ak ( ! outFile. je otvorené ( ) ) {

std :: cerr << 'Chyba! Nie je možné otvoriť súbor na zápis!' << std :: endl ;

vrátiť 1 ;

}

int čísla [ ] = { 42 , 99 , - 1 , 0 } ;

outFile. písať ( reinterpret_cast < char *> ( čísla ) , veľkosť ( čísla ) ) ;

outFile. Zavrieť ( ) ;

std :: cout << 'Dané celé čísla boli úspešne zapísané do binárneho súboru.' << std :: endl ;

vrátiť 0 ;

}

Tu je rozpis kódu s konkrétnymi podrobnosťami:

„#include “ a „#include “ prinášajú potrebné nástroje na prácu so súbormi a tlač správ ako cin a write(). The 'std::ofstream outFile('integers.bin', std::ios::binary);' otvorí binárny súbor s názvom „integers.bin“, ktorý môže ukladať čísla iba v tajnom kóde (binárny formát). Skontroluje, či je súbor otvorený. V opačnom prípade sa zobrazí chybové hlásenie.

Ďalší riadok je „int čísla[] = {42, 99, -1, 0};“ definuje pole s názvom „čísla“ s celými číslami 42, 99, -1 a 0. The „outFile.write(reinterpret_cast(numbers), sizeof(numbers));“ starostlivo preloží celé čísla do binárneho formátu a zapíše ich do súboru „integer.bin“. „outFile.close();“ správne zatvorí súbor, aby boli celé čísla v bezpečí a usporiadané. Nakoniec sa vytlačí správa, ktorá potvrdí, že celé čísla boli úspešne uložené do binárneho súboru. Ak chcete vidieť výsledok, pozrite si nasledujúci výstup tohto programu:

Záver

Písanie binárnych súborov v C++ je kľúčovou zručnosťou na efektívne spracovanie rôznych typov údajov. Pri tomto skúmaní písania binárnych súborov v C++ sme sa naučili, ako možno použiť triedu „ofstream“ na efektívne spracovanie binárnych údajov. Či už ide o jednoduché celé čísla alebo štruktúrované údaje pomocou vlastných štruktúr, proces zahŕňa otvorenie toku súborov, zápis údajov v binárnom formáte a potom zatvorenie súboru. Táto schopnosť poskytuje vývojárom C++ flexibilitu pri práci s rôznymi typmi binárnych údajov, čo prispieva k všestrannosti jazyka v aplikáciách, ktoré siahajú od programovania na úrovni systému až po spracovanie multimédií.