OVH Cloud OVH Cloud

écrire un vector dans un fichier binaire

11 réponses
Avatar
KooK
Bonjour,

J'ai une classe qui contient un élément vector<bitset<N> > de longueur
variable. N est fixe. Je voudrais écrire le conteneur de ce vecteur dans
un fichier binaire.
Je pensais utiliser une fonction data() qui retournerait un char*.
Mais comme le vecteur peut avoir une taille importante (>10^9), je ne
voudrais pas l'avoir 2 fois en mémoire. En plus avec cette façon de
faire je devrais gérer la désallocation.
Ma question est donc : suis-je sur le droit chemin ? Suis-je passé à
côté d'une solution évidente/de la STL ?

Merci de votre aide.
KooK

static const int N=4;

class Suite
{
vector<bitset<N> > *suite;
char* _data; //? mon tampon de sortie
...

char* data()
{
//allocation _data
//remplissage _data
return _data;
}

int dataSize()
{
//renvoie la taille de _data
}
};

int main(void)
{
//construit un vecteur de 1000 éléments
// soit 1000 *(N/8) = 500 octects
Suite ma_suite(1000);

//écriture dans un fichier binaire les 500 octets
ofstream fs("sortie.dat", ios_base::binary);
fs.write(ma_suite.data(), ma_suite.dataSize());
fs.close();
cerr << "le fichier a été écrit !\n";
}

1 réponse

1 2
Avatar
KooK
Merci pour ta réponse complète.
Mais j'ai surtout compris que je ne maîtrise pas encore assez bien les
flux. Il va falloir que je me penche dessus.

Encore merci.
KooK
1 2