Сериализация и десериализация вектора в двоичном

У меня проблемы с попыткой сериализации вектора (std :: vector) в двоичный формат, а затем корректной десериализации его и возможности чтения данных. Это мой первый раз, когда я использую двоичный формат (я использовал ASCII, но это стало слишком трудно использовать сейчас), поэтому я начинаю с простого только с вектором целых чисел.

Всякий раз, когда я читаю данные обратно, вектор всегда имеет правильную длину, но данные либо 0, либо неопределенные, либо случайные.

class Example  
{  
public:  
    std::vector<int> val;  
};

ЗАПИСЫВАТЬ:

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();  
}

ЧИТАТЬ:

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();
}

Кто-нибудь знает, что я делаю неправильно или что делать, или может указать мне направление, в котором я должен делать?

Ответы на вопрос(4)

Ваш ответ на вопрос