Определяемый пользователем Сериализация Класса, 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.