| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > boost::serialization |
| Автор: GoldFinch 1.7.2009, 19:10 | ||
как избавиться от какого-то префикса который пишется перед данными класса?
получается "dcba", 00, 00, "rewq" а хотелось бы без этих двух нулевых байт, и чтоб конечно обратно читалось |
| Автор: jonie 1.7.2009, 19:52 |
| сколь я понимаю это сам "id класса". Ты можешь поставить брейкпоинт в basic_ostream::write и прогуляться по стеку в поисках того, кто пишет, наверняка там будет ответ и зачем... |
| Автор: GoldFinch 1.7.2009, 20:27 |
| мне больше кажется что это версия, хотя она unsigned int version от этого избавитсья както можно? я хочу юзать буст::сериализацию для приема\отправки данных в готовую программу, и там не должно быть ничего лишнего Добавлено через 5 минут и 47 секунд а где кстати про буст почитать можно, кроме boost.org, а то там информации почти нет |
| Автор: bsa 2.7.2009, 12:27 | ||
|
| Автор: GoldFinch 2.7.2009, 13:37 |
| bsa, я новичек в бусте %) |
| Автор: GoldFinch 2.7.2009, 18:55 |
| немного потрассировав реализацию архива, у меня сложилось впечатление, что эти лишние 2 байта - id объекта, версия и т.п. - записываются внутри базовых классов, и от них никак не избавиться. похоже придется писать полностью свою сериализацию |
| Автор: Lazin 2.7.2009, 20:39 |
| может реализовать свой архив используя инфраструктуру boost::serialization? |
| Автор: GoldFinch 2.7.2009, 20:48 |
| Lazin, код который мне нада убрать находится в boost::archive::detail::basic_oarchive_impl::save_object() это часть инфраструктуры boost::serialization |
| Автор: Lazin 2.7.2009, 20:56 |
| GoldFinch, я никогда не использовал boost::serialization, но мне кажется, что boost::archive::detail::basic_oarchive_impl::save_object() куда-нибудь делегирует сохранение этого заголовка... иначе как можно было написать столько разных архивов? Добавлено через 40 секунд в документации должно быть что-нибудь на эту тему |
| Автор: GoldFinch 2.7.2009, 21:20 | ||
| Lazin, оно использует тот же архив для сохранения. типа версия объекта int ver, и оно вызывает *this<<ver а архив-то не знает что за int в него записали Добавлено через 3 минуты и 59 секунд в документации написано
что говорит о том, что так и задумано, что служебная информация пишется потрохами библиотеки там есть методы позволяющие дописать еще и свою служебную информацию, но нет способа избавиться от родной |
| Автор: GoldFinch 2.7.2009, 21:37 | ||
| хм... а может я и неправ... в документации ничего нет, зато в каментах в коде много интересного, например
|
| Автор: GoldFinch 3.7.2009, 11:20 | ||
да, действительно, написав такой класс, я избавился от этого префикса
однако, для моей задачи надо еще переопределить сохранение строк и массивов, (у буста с префиксной длиной, мне надо без нее) и т.п. и т.д. вобщем если написать то что надо мне используя буст, потребуется переопределить больше половины инфраструктуры буста, причем большая часть кода будет связана не с самим процессом сериализации, а борьбой с бустом. |