écrire un vector dans un fichier binaire

Le
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 !";
}
  • Partager ce contenu :
Vos réponses Page 2 / 2
Trier par : date / pertinence
KooK
Le #287711
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
Poster une réponse
Anonyme