C++ gir
Skriv en binær fil med C++
For å lagre dataene i en binær fil ved hjelp av C++, brukes skrive()-metoden. Denne funksjonen skriver et spesifisert antall byte til den angitte strømmen, og begynner på plasseringen av 'put'-pekeren. Hvis 'put'-pekeren er på slutten, utvides filen. De nye dataene overskriver imidlertid de eksisterende tegnene hvis pekeren er i filen. Ved feil under skriveprosessen merkes strømmen som feil. La oss nå gå videre til eksemplene for å lære hvordan du skriver i en binær fil ved å bruke noen enkle og innebygde C++-funksjoner.
Metode 1: Skrive binære filer med strukturerte data
Du må kanskje skrive strukturerte data, for eksempel tilpassede strukturer, til en binær fil i mange tilfeller. La oss vurdere et eksempel som inneholder en oversikt over en person som inkluderer navn, høyde og alder på en person. Se følgende gitte kode og ta en titt på forklaringen:
#include
#include
struktur Person {
røye Navn [ femti ] ;
int alder ;
dobbelt høyde ;
} ;
int hoved- ( ) {
std :: av strømmen utfil ( «people.bin» , std :: ios :: binær ) ;
hvis ( ! utfil. er åpen ( ) ) {
std :: cerr << 'Feil! Kan ikke åpne filen for skriving!' << std :: endl ;
komme tilbake 1 ;
}
Person person1 = { 'Kalsoom Ilyas' , 25 , 1,75 } ;
Person person 2 = { 'Kalsoom Bajwa' , 30 , 1,68 } ;
utfil. skrive ( reinterpret_cast < røye *> ( & person 1 ) , størrelsen av ( person 1 ) ) ;
utfil. skrive ( reinterpret_cast < røye *> ( & person2 ) , størrelsen av ( person2 ) ) ;
utfil. Lukk ( ) ;
std :: cout << 'Personens post er skrevet til binær fil vellykket.' << std :: endl ;
komme tilbake 0 ;
}
Her er en oversikt over koden med de spesifikke detaljene. Programmet begynner med å definere en tilpasset struktur kalt 'Person'. Den har tre felt: navn, alder og høyde. Detaljene i disse feltene er som følger:
- Navn: En streng for å lagre personens navn (opptil 50 tegn)
- alder: Et heltall for å lagre personens alder
- høyde: En dobbel for å lagre personens høyde
Etter å ha definert 'Person'-strukturen, starter hovedfunksjonen som er programmets inngangspunkt. Den første linjen i hovedprogrammet åpner en fil som heter 'people.bin'. Vi bruker 'std::ofstream' for å lage en fil kalt 'people.bin' for å skrive dataene i binært format. Det er veldig viktig å sjekke om filen åpnes. Ellers vises en feilmelding og programmet stopper. Derfor, ved hjelp av 'if'-betingelsen og is_open()-funksjonen, sjekker vi om filen har åpnet vellykket eller ikke.
Her opprettes de to 'Person'-objektene. Vi definerer to variabler, 'person1' og 'person2', av typen 'Person'. Vi tildeler variabelnavn, alder og høydeverdier for 'Kalsoom Ilyas' og 'Kalsoom Bajwa'.
Nå som vi har dataene til å skrive i en binær fil, la oss utføre den faktiske funksjonen med skrive()-funksjonen. Vi bruker 'outFile.write' for å skrive innholdet til hvert 'Person'-objekt til filen. 'reinterpret_cast
Etter å ha skrevet dataene på filen, er det svært viktig å lukke den ordentlig slik at ingen data går tapt på grunn av noen annen funksjon. Vi bruker outFile.close() for å frigjøre ressursene som er knyttet til filen og sikre at dataene er skrevet nøyaktig. Til slutt skriver vi ut en melding som bekrefter at dataene ble skrevet til den binære filen.
Hvis vi forklarer dette eksemplet i enklere termer, forestill deg en spesiell notatbok som bare kan lagre informasjon om mennesker på et hemmelig språk. Denne koden lager en blåkopi for å organisere informasjonen (navn, alder, høyde). Den åpner notatboken, fyller ut profilene for to personer, oversetter informasjonen til det hemmelige språket og skriver den pent inn. Den lukker deretter den bærbare datamaskinen sikkert, og bevarer profilene for fremtidig bruk. Se utdataene til programmet som er gitt i følgende øyeblikksbilde:
Metode 2: Skrive heltall til en binær fil
I denne metoden skrives en rekke heltall til en binær fil kalt 'integers.bin'. 'reinterpret_cast
#include
int hoved- ( ) {
std :: av strømmen utfil ( 'integers.bin' , std :: ios :: binær ) ;
hvis ( ! utfil. er åpen ( ) ) {
std :: cerr << 'Feil! Kan ikke åpne filen for skriving!' << std :: endl ;
komme tilbake 1 ;
}
int tall [ ] = { 42 , 99 , - 1 , 0 } ;
utfil. skrive ( reinterpret_cast < røye *> ( tall ) , størrelsen av ( tall ) ) ;
utfil. Lukk ( ) ;
std :: cout << 'De gitte heltallene ble skrevet til binærfilen vellykket.' << std :: endl ;
komme tilbake 0 ;
}
Her er en oversikt over koden med de spesifikke detaljene:
'#include
Den neste linjen som er 'int tall[] = {42, 99, -1, 0};' definerer en matrise kalt 'numbers' med heltall 42, 99, -1 og 0. 'outFile.write(reinterpret_cast
Konklusjon
Å skrive binære filer i C++ er en avgjørende ferdighet for å effektivt håndtere ulike typer data. I denne utforskningen av å skrive binære filer i C++, har vi lært hvordan 'ofstream'-klassen kan brukes til å håndtere binære data effektivt. Enten man arbeider med enkle heltall eller strukturerte data ved hjelp av tilpassede strukturer, innebærer prosessen å åpne en filstrøm, skrive dataene i binært format og deretter lukke filen. Denne evnen gir C++-utviklerne fleksibiliteten til å jobbe med et mangfoldig utvalg av binære datatyper, noe som bidrar til allsidigheten til språket i applikasjoner som spenner fra programmering på systemnivå til multimediabehandling.