2012-02-11 18 views
11

Ho una domanda molto semplice, che sembra essere difficile per me dal momento che questa è la prima volta che ho provato a lavorare con i file binari, e non ho abbastanza di loro capiscono. Tutto quello che voglio fare è scrivere un numero intero in un file binario.scrittura intero a file binario (C++)

Ecco come ho fatto:

#include <fstream> 
using namespace std; 
int main() { 
    int num=162; 
    ofstream file ("file.bin", ios::binary); 
    file.write ((char *)&num, sizeof(num)); 
    file.close(); 
    return 0; 
} 

La prego di dirmi se ho fatto qualcosa di sbagliato, e che cosa?

La parte che mi sta dando problemi è in linea con file.write, io non lo capisco.

Grazie in anticipo.

+1

Funziona? In che cosa differisce da ciò che ti aspetti? –

+2

Consiglio Nitpick: 1) dì 'reinterpret_cast (& num)', e ometti 'file.close()' e 'return 0', dato che tutti gli eventi avvengono automaticamente. –

+0

@KerrekSB Potresti spiegare cosa reinterpret_cast (& num) fa? – eqagunn

risposta

19

La parte che mi dà problemi è riga con file.write, non lo capisco .

Se leggete la documentazione di ofstream.write() metodo, vedrete che essa richiede due argomenti:

  1. un puntatore ad un blocco di dati con il contenuto da scrivere;

  2. un valore intero che rappresenta la dimensione , in byte, di questo blocco.

Questa affermazione dà solo queste due informazioni per ofstream.write():

file.write(reinterpret_cast<const char *>(&num), sizeof(num)); 

&num è l'indirizzo del blocco di dati (in questo caso solo una variabile intera), sizeof(num) è la dimensione di questo blocco (es. 4 byte su piattaforme Windows).