У меня есть некие данные и есть некий формат, в котором они должны лежать. Например, int, short, char лежат как обычно,
а для string будут задаваться размеры произвольным образом. Например, две строки вплотную, а перед ними общий размер и размер первой.
Мне нужно собственно читать и писать эти данные из этого формата и обратно.
Первая мысль — написать перегруженные функции для чтения всего этого. Но, как человек, не любящий изобретать квадратные колеса, хочу спросить у вас:
есть ли какие-нибудь готовые используемые классы? Можно ли в boost.serialization четко задавать тип хранения данных?
Например для строки считать сначала длину ее, а потом строку моей заданной фиксированной длины (с нулем или без нуля, по выбору?)
С уважением,
Владимир.
Re: простой вопрос про сериализацию в бинарный формат
Здравствуйте, antirest, Вы писали:
A>есть ли какие-нибудь готовые используемые классы? Можно ли в boost.serialization четко задавать тип хранения данных? A>Например для строки считать сначала длину ее, а потом строку моей заданной фиксированной длины (с нулем или без нуля, по выбору?)
Как я понимаю тебе потом надо будет скормить сериализованный файлик какой-то другой программе (илф прочитать сгенеренный кем-то файл)? Тогда лучше с boost.serialization не связывайся. Он захочет писать кучу служебной информации вроде версии, идентификатора объекта при сериализации через указатель, типа и т. п. boost.serialization удобен когда тебе нужно единообразно сериализовать несколько по-всякому ссылающихся друг на друга классов, иерархий, сериализовать их коллекции, сериализовать через указатели (в т.ч. умные) на базовые классы и т.п. В такой ситуации boost.serialization позволяет очень легко менять состав классов не заморачиваясь с сериализацией.
А если у тебя заранее известный формат данных не тобою меняемый, то лучше написать один раз соответствующие функции и забыть.