web-dev-qa-db-fra.com

Vous écrivez un entier dans un fichier binaire en utilisant C ++?

J'ai une question très simple, qui s'avère difficile pour moi car c'est la première fois que j'essaie de travailler avec des fichiers binaires, et je ne les comprends pas très bien. Tout ce que je veux faire, c'est écrire un entier dans un fichier binaire.

Voici comment je l'ai fait:

#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;
}

Pourriez-vous s'il vous plaît me dire si j'ai fait quelque chose de mal, et quoi?

La partie qui me pose problème est en ligne avec file.write, je ne la comprends pas.

Merci d'avance.

16
eqagunn

La partie qui me pose problème est en ligne avec file.write, je ne la comprends pas.

Si vous lisez la documentation de la méthode ofstream.write(), vous verrez qu'elle demande deux arguments:

  1. un pointeur vers un bloc de données avec le contenu à écrire;

  2. une valeur entière représentant la taille, en octets, de ce bloc.

Cette instruction donne simplement ces deux informations à ofstream.write():

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

&num Est l'adresse du bloc de données (dans ce cas juste une variable entière), sizeof(num) est la taille de ce bloc (par exemple 4 octets sur les plates-formes Windows).

28
user1149224