C++ fornisce la libreria
Scrivere un file binario utilizzando C++
Per salvare i dati in un file binario utilizzando C++, viene utilizzato il metodo write(). Questa funzione scrive un numero specificato di byte nel flusso designato, iniziando dalla posizione del puntatore 'put'. Se il puntatore 'put' è alla fine, il file viene esteso. Tuttavia, i nuovi dati sovrascrivono i caratteri esistenti se il puntatore si trova all'interno del file. In caso di errore durante il processo di scrittura, lo stream viene contrassegnato come in stato di errore. Passiamo ora agli esempi per imparare a scrivere in un file binario utilizzando alcune funzioni semplici e integrate in C++.
Metodo 1: scrivere file binari con dati strutturati
In molti casi potrebbe essere necessario scrivere dati strutturati, ad esempio strutture personalizzate, in un file binario. Consideriamo un esempio che contiene un record di una persona che include il nome, l'altezza e l'età di una persona. Vedi il codice seguente e dai un'occhiata alla spiegazione:
#include
#include
struttura Persona {
car nome [ cinquanta ] ;
int età ;
Doppio altezza ;
} ;
int principale ( ) {
standard :: ofstream outFile ( 'persone.bin' , standard :: ios :: binario ) ;
Se ( ! outFile. è aperto ( ) ) {
standard :: cerr << 'Errore! Impossibile aprire il file per la scrittura!' << standard :: fine ;
ritorno 1 ;
}
Persona persona1 = { 'Kalsom Ilyas' , 25 , 1,75 } ;
Persona persona2 = { 'Kalsom Bajwa' , 30 , 1,68 } ;
outFile. scrivere ( reinterpret_cast < car *> ( & persona 1 ) , taglia di ( persona 1 ) ) ;
outFile. scrivere ( reinterpret_cast < car *> ( & persona2 ) , taglia di ( persona2 ) ) ;
outFile. vicino ( ) ;
standard :: cout << 'Il record della persona è stato scritto correttamente nel file binario.' << standard :: fine ;
ritorno 0 ;
}
Ecco una ripartizione del codice con i dettagli specifici. Il programma inizia con la definizione di una struttura personalizzata denominata 'Persona'. Ha tre campi: nome, età e altezza. I dettagli di questi campi sono i seguenti:
- nome: Una stringa per memorizzare il nome della persona (fino a 50 caratteri)
- età: Un numero intero per memorizzare l'età della persona
- altezza: Un doppio per memorizzare l’altezza della persona
Dopo aver definito la struttura “Persona”, si avvia la funzione principale che costituisce il punto di ingresso del programma. La prima riga del programma principale apre un file denominato 'people.bin'. Usiamo 'std::ofstream' per creare un file denominato 'people.bin' per scrivere i dati in formato binario. Controllare se il file si apre correttamente è molto importante. In caso contrario, viene visualizzato un messaggio di errore e il programma si arresta. Quindi, con l'aiuto della condizione 'if' e della funzione is_open(), controlliamo se il file è stato aperto correttamente o meno.
Qui vengono creati i due oggetti “Persona”. Definiamo due variabili, “person1” e “person2”, di tipo “Person”. Assegniamo i valori del nome, dell'età e dell'altezza della variabile per 'Kalsoom Ilyas' e 'Kalsoom Bajwa'.
Ora che abbiamo i dati da scrivere in un file binario, eseguiamo la funzione vera e propria con la funzione write(). Usiamo 'outFile.write' per scrivere il contenuto di ciascun oggetto 'Person' nel file. 'reinterpret_cast
Dopo aver scritto i dati sul file, è molto importante chiuderlo correttamente in modo che nessun dato venga perso a causa di altre funzioni. Utilizziamo outFile.close() per rilasciare le risorse associate al file e garantire che i dati vengano scritti in modo accurato. Infine, stampiamo un messaggio che conferma la corretta scrittura dei dati nel file binario.
Se spieghiamo questo esempio in termini più semplici, immaginiamo un taccuino speciale che possa memorizzare solo informazioni sulle persone in una lingua segreta. Questo codice crea un modello per organizzare le informazioni (nome, età, altezza). Apre il taccuino, compila i profili di due persone, traduce le informazioni nella lingua segreta e le scrive ordinatamente all'interno. Chiude quindi il notebook in modo sicuro, preservando i profili per un utilizzo futuro. Fare riferimento all'output del programma fornito nella seguente istantanea:
Metodo 2: scrivere numeri interi in un file binario
In questo metodo, un array di numeri interi viene scritto in un file binario denominato 'integers.bin'. Il 'reinterpret_cast
#include
int principale ( ) {
standard :: ofstream outFile ( 'interi.bin' , standard :: ios :: binario ) ;
Se ( ! outFile. è aperto ( ) ) {
standard :: cerr << 'Errore! Impossibile aprire il file per la scrittura!' << standard :: fine ;
ritorno 1 ;
}
int numeri [ ] = { 42 , 99 , - 1 , 0 } ;
outFile. scrivere ( reinterpret_cast < car *> ( numeri ) , taglia di ( numeri ) ) ;
outFile. vicino ( ) ;
standard :: cout << 'I numeri interi specificati sono stati scritti correttamente nel file binario.' << standard :: fine ;
ritorno 0 ;
}
Ecco una ripartizione del codice con i dettagli specifici:
'#include
La riga successiva che è 'int numeri[] = {42, 99, -1, 0};' definisce un array denominato 'numeri' con i numeri interi 42, 99, -1 e 0. 'outFile.write(reinterpret_cast
Conclusione
Scrivere file binari in C++ è un'abilità cruciale per gestire in modo efficiente i vari tipi di dati. In questa esplorazione della scrittura di file binari in C++, abbiamo imparato come utilizzare la classe 'ofstream' per gestire i dati binari in modo efficiente. Sia che si tratti di numeri interi semplici o di dati strutturati utilizzando strutture personalizzate, il processo prevede l'apertura di un flusso di file, la scrittura dei dati in formato binario e quindi la chiusura del file. Questa funzionalità fornisce agli sviluppatori C++ la flessibilità necessaria per lavorare con una vasta gamma di tipi di dati binari, contribuendo alla versatilità del linguaggio in applicazioni che vanno dalla programmazione a livello di sistema all'elaborazione multimediale.