Kirjutage binaarfail C++ keeles

Kirjutage Binaarfail C Keeles



C++ programmeerimises on binaarfailidega tegelemine algandmete salvestamisel ja töötlemisel ülioluline. Olenemata sellest, kas töötate piltide, helifailide või kohandatud andmestruktuuridega, on binaarfailide tõhusa kirjutamise võimalus ülioluline. Binaarfailid salvestavad andmed inimesele mitteloetavas vormingus, mistõttu need sobivad mitmesuguste rakenduste jaoks, nagu näiteks keerukate struktuuride, piltide või muude andmete salvestamine, mis ei järgi lihtsat tekstipõhist esitust.

C++ pakub binaarandmete kirjutamiseks teeki , et suhelda binaarfailidega, eriti 'ofstream' klassiga. See võimalus võimaldab arendajatel binaarfaile sujuvalt luua, muuta ja hallata. See artikkel uurib erinevaid meetodeid ja tehnikaid binaarfailide kirjutamiseks C++-s, valgustades nende rakendusi ja kasutusjuhtumeid.

Kirjutage binaarfail, kasutades C++

Andmete salvestamiseks binaarfaili kasutades C++ kasutatakse meetodit write(). See funktsioon kirjutab kindlaksmääratud arvu baite määratud voogu, alustades 'put' kursori asukohast. Kui 'put' osuti on lõpus, pikendatakse faili. Uued andmed kirjutavad aga olemasolevad märgid üle, kui kursor asub faili sees. Kui kirjutamisprotsessi ajal tekib tõrge, märgitakse voog veaolekusse. Liigume nüüd näidete juurde, et õppida, kuidas kirjutada binaarfaili, kasutades mõningaid lihtsaid ja sisseehitatud C++ funktsioone.







1. meetod: struktureeritud andmetega binaarfailide kirjutamine

Paljudel juhtudel peate võib-olla kirjutama struktureeritud andmed, näiteks kohandatud struktuurid, binaarfaili. Vaatleme näidet, mis sisaldab isikukirjet, mis sisaldab inimese nime, pikkust ja vanust. Vaadake järgmist antud koodi ja vaadake selgitust:



#include

#include

struktuur Isik {

char nimi [ viiskümmend ] ;

int vanus ;

kahekordne kõrgus ;

} ;

int peamine ( ) {

std :: väljaspool voolu outFile ( 'inimesed.kastike' , std :: ios :: binaarne ) ;

kui ( ! outFile. on avatud ( ) ) {

std :: cerr << 'Viga! Faili ei saa kirjutamiseks avada!' << std :: endl ;

tagasi 1 ;

}

Isik isik 1 = { 'Kalsoom Iljas' , 25 , 1.75 } ;

Isik isik 2 = { 'Kalsoom Bajwa' , 30 , 1.68 } ;

outFile. kirjutada ( reinterpret_cast < char *> ( & inimene 1 ) , suurus ( inimene 1 ) ) ;

outFile. kirjutada ( reinterpret_cast < char *> ( & inimene 2 ) , suurus ( inimene 2 ) ) ;

outFile. Sulge ( ) ;

std :: cout << 'Isiku kirje kirjutati edukalt binaarfaili.' << std :: endl ;

tagasi 0 ;

}

Siin on koodi jaotus koos konkreetsete üksikasjadega. Programm algab kohandatud struktuuri 'Isik' määratlemisega. Sellel on kolm välja: nimi, vanus ja pikkus. Nende väljade üksikasjad on järgmised.



  • nimi: String inimese nime salvestamiseks (kuni 50 tähemärki)
  • vanus: Täisarv inimese vanuse salvestamiseks
  • kõrgus: Kahekordne inimese pikkuse salvestamiseks

Pärast struktuuri 'Isik' määratlemist käivitub põhifunktsioon, mis on programmi sisenemispunkt. Põhiprogrammi esimene rida avab faili nimega “people.bin”. Me kasutame 'std::ofstream' faili nimega 'people.bin' loomiseks andmete binaarvormingus kirjutamiseks. Faili eduka avanemise kontrollimine on väga oluline. Vastasel juhul kuvatakse veateade ja programm peatub. Seega kontrollime tingimuse “if” ja funktsiooni is_open() abil, kas fail avanes edukalt või mitte.





Siin luuakse kaks 'Isik' objekti. Määratleme kaks muutujat, 'isik1' ja 'isik2', 'Isik' tüüpi. Määrame 'Kalsoom Ilyas' ja 'Kalsoom Bajwa' muutuja nime, vanuse ja pikkuse väärtused.

Nüüd, kui meil on binaarfaili kirjutamiseks vajalikud andmed, täitkem tegelik funktsioon funktsiooniga write(). Iga objekti 'Person' sisu faili kirjutamiseks kasutame faili 'outFile.write'. 'Reinterpret_cast(&person1)' ja 'reinterpret_cast(&person2)' teisendavad kogu 'Person' struktuuri (sh kõik selle väljad) pidevaks baitide vooks, mis sobib binaarfaili kirjutamiseks . Kirjutame iga objekti 'Isik' suuruse, kasutades 'sizeof(person1)' ja 'sizeof(person2)', et tagada kõigi andmete korrektne kirjutamine.



Pärast andmete faili kirjutamist on väga oluline see korralikult sulgeda, et andmed ei läheks mõne muu funktsiooni tõttu kaduma. Kasutame failiga seotud ressursside vabastamiseks ja andmete täpse kirjutamise tagamiseks funktsiooni outFile.close(). Lõpuks prindime teate, mis kinnitab andmete edukat binaarfaili kirjutamist.

Kui seletame seda näidet lihtsamalt, kujutage ette spetsiaalset märkmikku, mis suudab salvestada teavet inimeste kohta ainult salakeeles. See kood loob plaani teabe (nimi, vanus, pikkus) korraldamiseks. See avab märkmiku, täidab kahe inimese profiilid, tõlgib teabe salakeelde ja kirjutab selle kenasti sisse. Seejärel sulgeb see sülearvuti turvaliselt, säilitades profiilid edaspidiseks kasutamiseks. Vaadake programmi väljundit, mis on toodud järgmises hetktõmmises:

2. meetod: täisarvude kirjutamine binaarfaili

Selle meetodi puhul kirjutatakse täisarvude massiiv binaarfaili nimega 'integers.bin'. 'Reinterpret_cast' käsitleb täisarvude massiivi faili kirjutamiseks tähemärkide (baitide) jadana. See on eriti oluline, kuna binaarfailid käsitlevad töötlemata baidiandmeid. Vaatame järgmist lihtsat näidet:

#include

#include

int peamine ( ) {

std :: väljaspool voolu outFile ( 'täisarvud.bin' , std :: ios :: binaarne ) ;

kui ( ! outFile. on avatud ( ) ) {

std :: cerr << 'Viga! Faili ei saa kirjutamiseks avada!' << std :: endl ;

tagasi 1 ;

}

int numbrid [ ] = { 42 , 99 , - 1 , 0 } ;

outFile. kirjutada ( reinterpret_cast < char *> ( numbrid ) , suurus ( numbrid ) ) ;

outFile. Sulge ( ) ;

std :: cout << 'Antud täisarvud on binaarfaili edukalt kirjutatud.' << std :: endl ;

tagasi 0 ;

}

Siin on koodi jaotus koos konkreetsete üksikasjadega:

'#include ' ja '#include ' toovad kaasa vajalikud tööriistad failidega töötamiseks ja sõnumite printimiseks, nagu vastavalt cin ja write(). 'std::ofstream outFile('integers.bin', std::ios::binary);' avab binaarfaili nimega 'integers.bin', mis suudab salvestada numbreid ainult salakoodis (binaarvormingus). See kontrollib, kas fail on avatud. Vastasel juhul kuvatakse veateade.

Järgmine rida, mis on 'int numbers[] = {42, 99, -1, 0};' defineerib massiivi nimega 'numbers' täisarvudega 42, 99, -1 ja 0. 'outFile.write(reinterpret_cast(numbers), sizeof(numbers));' tõlgib täisarvud hoolikalt binaarvormingusse ja kirjutab need faili 'integer.bin'. 'outFile.close();' sulgeb faili õigesti, et hoida täisarvud turvalisena ja korrastatuna. Lõpuks prinditakse teade, mis kinnitab, et täisarvud on binaarfaili edukalt salvestatud. Tulemuse nägemiseks vaadake selle programmi järgmist väljundit:

Järeldus

Binaarfailide kirjutamine C++ keeles on eri tüüpi andmete tõhusaks haldamiseks ülioluline oskus. Selles C++-s binaarfailide kirjutamise uurimisel oleme õppinud, kuidas voovälist klassi saab kasutada binaarandmete tõhusaks käsitlemiseks. Olenemata sellest, kas tegemist on lihtsate täisarvude või kohandatud struktuuride abil struktureeritud andmetega, hõlmab protsess failivoo avamist, andmete binaarvormingus kirjutamist ja seejärel faili sulgemist. See võimalus annab C++ arendajatele paindlikkuse töötada erinevate binaarandmete tüüpidega, aidates kaasa keele mitmekülgsusele rakendustes, mis ulatuvad süsteemitasemel programmeerimisest kuni multimeediumitöötluseni.