Boost — сериализовать строку с кодировкой TLV

#c #string #boost #boost-serialization #tlv

#c #строка #повышение #повышение-сериализация #tlv

Вопрос:

Можно ли сериализовать строку с кодировкой TLV с помощью boost? Или я должен сначала закодировать, а затем просто сериализовать двоичные данные с помощью boost? Если да, то как кодировать в TLV?

Ответ №1:

Архивы двоичной сериализации Boost уже используют что-то похожее на TLV. Очевидно, что проще всего было бы просто придерживаться сериализации по умолчанию для строк.

Однако вы можете определить пользовательскую сериализацию для своих пользовательских типов.

Используя BOOST_STRONG_TYPEDEF вы можете создать строгий «пользовательский» typedef вокруг ваших строковых значений TLV, и таким образом вы можете решить, как сериализовать строки (например, для этой ситуации может быть достаточно сериализовать необработанные данные в виде массива байтов. Вы можете взглянуть boost::serialization::make_array<T>() на отправную точку