C++ suteikia biblioteką
Parašykite dvejetainį failą naudodami C++
Norint išsaugoti duomenis į dvejetainį failą naudojant C++, naudojamas rašymo () metodas. Ši funkcija įrašo nurodytą skaičių baitų į nurodytą srautą, pradedant nuo „įdėjimo“ žymeklio vietos. Jei „įdėti“ rodyklė yra pabaigoje, failas išplečiamas. Tačiau nauji duomenys perrašo esamus simbolius, jei žymeklis yra faile. Jei rašymo metu įvyko klaida, srautas pažymimas kaip klaidos būsenos. Dabar pereikime prie pavyzdžių, kad sužinotume, kaip rašyti dvejetainiame faile naudojant keletą paprastų ir integruotų C++ funkcijų.
1 būdas: dvejetainių failų su struktūriniais duomenimis rašymas
Daugeliu atvejų gali tekti įrašyti struktūrinius duomenis, pvz., pasirinktines struktūras, į dvejetainį failą. Panagrinėkime pavyzdį, kuriame yra asmens įrašas, kuriame yra asmens vardas, ūgis ir amžius. Peržiūrėkite šį kodą ir peržiūrėkite paaiškinimą:
#include
#include
struktūra Asmuo {
char vardas [ penkiasdešimt ] ;
tarpt amžiaus ;
dvigubai aukščio ;
} ;
tarpt pagrindinis ( ) {
std :: už srauto outFile ( 'žmonės.bin' , std :: ios :: dvejetainis ) ;
jeigu ( ! outFile. atidarytas ( ) ) {
std :: cerr << 'Klaida! Nepavyko atidaryti failo rašymui!' << std :: endl ;
grąžinti 1 ;
}
Asmuo asmuo1 = { 'Kalsoom Ilyas' , 25 , 1.75 } ;
Asmuo asmuo2 = { 'Kalsoom Bajwa' , 30 , 1.68 } ;
outFile. rašyti ( reinterpret_cast < char *> ( & asmuo 1 ) , dydis ( asmuo 1 ) ) ;
outFile. rašyti ( reinterpret_cast < char *> ( & asmuo2 ) , dydis ( asmuo2 ) ) ;
outFile. Uždaryti ( ) ;
std :: cout << 'Asmens įrašas sėkmingai įrašytas į dvejetainį failą.' << std :: endl ;
grąžinti 0 ;
}
Čia pateikiamas kodo suskirstymas su konkrečia informacija. Programa pradedama apibrėžiant pasirinktinę struktūrą, pavadintą „Asmuo“. Jame yra trys laukai: vardas, amžius ir ūgis. Išsami informacija apie šiuos laukus yra tokia:
- vardas: Eilutė, skirta išsaugoti asmens vardą (iki 50 simbolių)
- amžius: Sveikasis skaičius, skirtas išsaugoti asmens amžių
- aukštis: Dvigubas, skirtas išlaikyti asmens ūgį
Apibrėžus „Asmens“ struktūrą, paleidžiama pagrindinė funkcija, kuri yra programos įėjimo taškas. Pirmoje pagrindinės programos eilutėje atidaromas failas pavadinimu „people.bin“. Naudojame „std::ofstream“, kad sukurtume failą pavadinimu „people.bin“, kad būtų galima įrašyti duomenis dvejetainiu formatu. Labai svarbu patikrinti, ar failas sėkmingai atidaromas. Priešingu atveju bus rodomas klaidos pranešimas ir programa sustos. Taigi, naudodamiesi sąlyga „if“ ir funkcija is_open (), patikriname, ar failas atidarytas sėkmingai, ar ne.
Čia sukuriami du „Asmens“ objektai. Mes apibrėžiame du kintamuosius „person1“ ir „person2“ tipo „Person“. „Kalsoom Ilyas“ ir „Kalsoom Bajwa“ priskiriame kintamųjų pavadinimą, amžių ir ūgį.
Dabar, kai turime duomenų, kuriuos reikia įrašyti į dvejetainį failą, atlikime tikrąją funkciją naudodami funkciją write (). Mes naudojame 'outFile.write', norėdami įrašyti kiekvieno objekto 'Person' turinį į failą. „Reinterpret_cast
Įrašius duomenis į failą, labai svarbu jį tinkamai uždaryti, kad jokie duomenys nepasimestų dėl kokios nors kitos funkcijos. Naudojame outFile.close(), kad išleistume su failu susietus išteklius ir užtikrintume, kad duomenys būtų parašyti tiksliai. Galiausiai išspausdiname pranešimą, patvirtinantį, kad duomenys sėkmingai įrašyti į dvejetainį failą.
Jei šį pavyzdį paaiškinsime paprasčiau, įsivaizduokite specialų sąsiuvinį, kuriame informacija apie žmones gali būti saugoma tik slapta kalba. Šis kodas sukuria planą informacijai (vardas, amžius, ūgis) sutvarkyti. Jis atidaro sąsiuvinį, užpildo dviejų žmonių anketas, išverčia informaciją į slaptą kalbą ir tvarkingai įrašo viduje. Tada jis saugiai uždaro nešiojamąjį kompiuterį, išsaugodamas profilius būsimam naudojimui. Peržiūrėkite programos išvestį, pateiktą šioje momentinėje nuotraukoje:
2 būdas: sveikųjų skaičių įrašymas į dvejetainį failą
Taikant šį metodą sveikųjų skaičių masyvas įrašomas į dvejetainį failą, pavadintą 'integers.bin'. „Reinterpret_cast
#include
tarpt pagrindinis ( ) {
std :: už srauto outFile ( 'integers.bin' , std :: ios :: dvejetainis ) ;
jeigu ( ! outFile. atidarytas ( ) ) {
std :: cerr << 'Klaida! Nepavyko atidaryti failo rašymui!' << std :: endl ;
grąžinti 1 ;
}
tarpt numeriai [ ] = { 42 , 99 , - 1 , 0 } ;
outFile. rašyti ( reinterpret_cast < char *> ( numeriai ) , dydis ( numeriai ) ) ;
outFile. Uždaryti ( ) ;
std :: cout << 'Duoti sveikieji skaičiai sėkmingai įrašyti į dvejetainį failą.' << std :: endl ;
grąžinti 0 ;
}
Štai kodo suskirstymas su konkrečia informacija:
„#include
Kita eilutė, kuri yra „int numbers[] = {42, 99, -1, 0};“ apibrėžia masyvą pavadinimu 'skaičiai' su sveikaisiais skaičiais 42, 99, -1 ir 0. 'outFile.write(reinterpret_cast
Išvada
Dvejetainių failų rašymas C++ yra esminis įgūdis norint efektyviai tvarkyti įvairių tipų duomenis. Tyrinėdami dvejetainių failų rašymą C++ kalba, sužinojome, kaip efektyviai tvarkyti dvejetainius duomenis galima panaudoti „ofstream“ klasę. Nesvarbu, ar dirbate su paprastais sveikaisiais skaičiais, ar su struktūriniais duomenimis, naudojant pasirinktines struktūras, procesas apima failų srauto atidarymą, duomenų įrašymą dvejetainiu formatu ir failo uždarymą. Ši galimybė suteikia C++ kūrėjams lankstumo dirbti su įvairiais dvejetainiais duomenų tipais, taip prisidedant prie kalbos universalumo programose, kurios svyruoja nuo sistemos lygio programavimo iki daugialypės terpės apdorojimo.