Bonjour, j'ai par exemple le champ de bits suivant:

unsigned int relativeDensity : 6;
unsigned int antiCubicDensity : 6;
int magnetActrprr : 20;

Je souhaite faire une sauvegarde sérialisé des deux derniers paramètres au bit près (je ne souhaite pas que antiCubicDensity prenne 32 bits dans la sauvegarde comme actuellement alors que 6 suffisent).

Mon code actuel pour sérialiser des primitives est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template < typename value_type >
inline void ecrireBinaire(ostream& out, const value_type& v) {
    out.write((char*)&v, sizeof(v));
}
si je fais un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template < typename value_type, int size >
inline void ecrireBinaire(ostream& out, const value_type& v) {
    out.write((char*)&v, size);
}
est-ce logique ? Je n'ai pas essayé ...

Et pour la lecture, actuellement j'utilise

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
        template < typename type_val >
        inline void lireBinaire(ifstream& in, type_val& v)
        {
            in.read((char*)&v, sizeof(v));
        }
puis-je faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
        template < typename type_val, int size >
        inline void lireBinaire(ifstream& in, type_val& v)
        {
            in.read((char*)&v, size);
        }
Je doute de la pertinence de mes suggessions.

Cordialement,