Come eseguire I / O con i file binari in C ++

June 8

Gli utenti di computer hanno familiarità con l'ASCII o simboli Unicode sui loro schermi. In realtà, dietro le quinte, i computer elaborano i numeri binari e memorizzare i file nel formato di dati binari. Questo formato è illeggibile dagli esseri umani. La potente classe fstream C ++ semplifica le operazioni di input / output. Con il tempo di finire questo articolo, saprete come utilizzare fstream di scrivere e leggere dati binari da e verso un file.

istruzione

1 Dite al preprocessore di introdurre il C ++ classe fstream nel programma, come segue:

includere <fstream.h>

2 Imparate a conoscere il formato ++ C del costruttore fstream. Ci vogliono due parametri. La prima, di tipo char *, è il nome del file. La seconda è una serie di bandiere, separate da una verticale, che conferiscono al sistema operativo informazioni extra sul funzionamento. Non preoccuparti per le bandiere in questo momento:

fs fstream ( "fname", ios :: in | ios :: binari | ios :: app);

3 Creare o aprire un file chiamato "data.txt." Set per scrittura dei dati. Aggiungere i dati alla fine del file:

fs fstream ( "data.txt", ios :: in); // tentativo di aprirlo per la lettura.

if (! fs) {

fs.open ( "data.txt", ios :: out | ios :: binari | ios :: app); // Il file non esiste; creare uno nuovo.

}

altro{

fs.close (); // Il file esiste; chiudere e riaprire per la scrittura.

fs.open ( "data.txt", ios :: out | ios :: binari | ios :: app);

}

4 Scrivi i primi 10 numeri interi nel file e chiudere il file:

for (int i = 0; i <10; i ++) {

fs.write (reinterpret_cast (& I), sizeof (int));

}

fs.close ();

5 Aprire il file di testo utilizzando Windows Explorer. Si dovrebbe vedere i numeri da 0 a 9 di fila. Anche se i dati è stato immesso in formato binario, il vostro editor di testo è occupato tradurlo in Unicode o valori numerici ASCII.

6 Riaprire il file e prepararlo per la lettura. Visualizzare il contenuto sullo standard output:

fs.open ( "data.txt", ios :: in | ios :: binari);

if (! fs) {

gettare SomeFileException;

}

int num;

for (int i = 0; i <10; i ++) {

fs.read (reinterpret_cast (& num), sizeof (int));

cout << num << endl;

}

Consigli e avvertenze

  • Si tratta di operazioni di I / O. quelli più avanzati includono la ricerca e la dereferenziazione il puntatore del file.