C++ pakub binaarandmete kirjutamiseks teeki
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
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
#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
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
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.