J'ai des problèmes à essayer de sérialiser un vecteur (std :: vector) dans un format binaire, puis de le désérialiser correctement et de pouvoir lire les données. C'est la première fois que j'utilise un format binaire (j'utilisais l'ASCII mais c'est devenu trop dur à utiliser maintenant) donc je commence simple avec juste un vecteur d'ints.Sérialiser et désérialiser un vecteur en binaire
Chaque fois que je relis les données, le vecteur a toujours la bonne longueur mais les données sont 0, indéfinies ou aléatoires.
class Example
{
public:
std::vector<int> val;
};
ECRITURE:
Example example = Example();
example.val.push_back(10);
size_t size = sizeof BinaryExample + (sizeof(int) * example.val.size());
std::fstream file ("Levels/example.sld", std::ios::out | std::ios::binary);
if (file.is_open())
{
file.seekg(0);
file.write((char*)&example, size);
file.close();
}
LIRE:
BinaryExample example = BinaryExample();
std::ifstream::pos_type size;
std::ifstream file ("Levels/example.sld", std::ios::in | std::ios::binary | std::ios::ate);
if (file.is_open())
{
size = file.tellg();
file.seekg(0, std::ios::beg);
file.read((char*)&example, size);
file.close();
}
Est-ce que quelqu'un sait ce que je fais mal ou quoi faire ou être en mesure de me diriger dans la direction que je dois faire?
Bienvenue sur SO. Pour mettre en forme un bloc de code, indentez le code entier de 4 espaces. – kennytm
Merci pour cela, le formatage me rendait fou. J'ai parlé à quelqu'un d'autre de ma question et il me semble que je dois faire plusieurs appels d'écriture pour chaque élément du vecteur ainsi que la taille du vecteur. –
Vous pouvez passer du temps à lire http://stackoverflow.com/editing-help. – kennytm