простой вопрос про сериализацию в бинарный формат
От: antirest  
Дата: 14.04.08 15:56
Оценка:
Здравствуйте!

У меня есть некие данные и есть некий формат, в котором они должны лежать. Например, int, short, char лежат как обычно,
а для string будут задаваться размеры произвольным образом. Например, две строки вплотную, а перед ними общий размер и размер первой.

Мне нужно собственно читать и писать эти данные из этого формата и обратно.

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

С уважением,
Владимир.
Re: простой вопрос про сериализацию в бинарный формат
От: Mazay Россия  
Дата: 15.04.08 05:58
Оценка:
Здравствуйте, antirest, Вы писали:

A>есть ли какие-нибудь готовые используемые классы? Можно ли в boost.serialization четко задавать тип хранения данных?

A>Например для строки считать сначала длину ее, а потом строку моей заданной фиксированной длины (с нулем или без нуля, по выбору?)

Как я понимаю тебе потом надо будет скормить сериализованный файлик какой-то другой программе (илф прочитать сгенеренный кем-то файл)? Тогда лучше с boost.serialization не связывайся. Он захочет писать кучу служебной информации вроде версии, идентификатора объекта при сериализации через указатель, типа и т. п. boost.serialization удобен когда тебе нужно единообразно сериализовать несколько по-всякому ссылающихся друг на друга классов, иерархий, сериализовать их коллекции, сериализовать через указатели (в т.ч. умные) на базовые классы и т.п. В такой ситуации boost.serialization позволяет очень легко менять состав классов не заморачиваясь с сериализацией.
А если у тебя заранее известный формат данных не тобою меняемый, то лучше написать один раз соответствующие функции и забыть.
Главное гармония ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.