Определяемый пользователем Сериализация Класса, C++ и msgpack


Я совершенно новый, пытающийся msgpack. Мне нужно сериализовать объект (экземпляр пользовательского класса), который содержит указатели (внутреннее дерево, хэши и т. Д.) И некоторые атрибуты базовых типов.

До сих пор я могу делать то, что делается в кратком примере вики msgpack.org, просто сериализовать класс в msgpack::sbufferи затем прочитайте буфер для десериализации.

Но теперь я хочу отправить этот буфер в файл или результат сериализации в файл, а затем десериализовать его.
Кто-нибудь может дать мне совет, как это сделать? Я просматриваю и читаю достаточно, чтобы устать от этого:)

Мой код выглядит так:

msgpack::sbuffer sbuf;
msgpack::pack(sbuf, cluster); //cluster is the instance of my class clustering

//HERE I SHOULD SEND THE BUFFER TO A STREAM FILE, AND THEN LOAD IT IN THE UNPACK;

msgpack::unpacked msg;
msgpack::unpack(&msg, sbuf.data(), sbuf.size()); 
msgpack::object obj = msg.get();
clustering clustUnser
obj.convert(&clustUnser);

Спасибо всем!
рекорды,
Luchux.

1 ответ

Решение

Из примера здесь:

http://wiki.msgpack.org/pages/viewpage.action?pageId=1081387

похоже, что sbuf.data() вернет адрес, а sbuf.size() вернет размер данных, которые вы записали бы в двоичный файл.

Если вы хотите загрузить данные из двоичного файла, прочитайте их в выделенный вами буфер, а затем передайте адрес и размер в вызов msgpack::unpack.

Другие вопросы по тегам