У меня проблемы с попыткой сериализации вектора (std :: vector) в двоичный формат, а затем корректной десериализации его и возможности чтения данных. Это мой первый раз, когда я использую двоичный формат (я использовал ASCII, но теперь это стало слишком сложно использовать), поэтому я начинаю с простого только с использованием целого вектора.
Всякий раз, когда я читаю данные обратно, вектор всегда имеет правильную длину, но данные либо 0, либо неопределенные, либо случайные.
class Example
{
public:
std::vector<int> val;
};
WRITE
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();
}
Кто-нибудь знает, что я делаю неправильно или что делать, или может указать мне направление, в котором я должен делать?