Witam
W firmie w której pracuje używają biblioteki cereal do serializacji i deserializacji. Z jakiegos powodu to niżej mi nie działa. Jak użyję memcpy zamiast cereala to działa tzn. metoda parse_from poprawnie uzupełni stringi path i interface z payloadu oraz metoda serialize_to poprawnie uzupełni payload ze stringów. A jak zrobić to z cerealem?
Poniżej 3-cia wersja. Pierwsza to były samy same stringi, druga to &stringi.front().
struct Struktura
{
std::string path;
std::string interface;
unsigned int byte_size() { return cereal::BinaryOutputArchive::stream_size(path.data(), interface.data()); }
void parse_from(const void* payload, size_t size)
{
cereal::BinaryInputArchive ia(const_cast<void*>(payload), size);
ia(path.data(), interface.data());
}
void serialize_to(void* payload, size_t size)
{
cereal::BinaryOutputArchive oa(payload, static_cast<uint16_t>(size));
oa(path.data(), interface.data());
}
};