|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
boost::serialization21.07.2011, 15:41. Показов 8879. Ответов 10
Метки нет (Все метки)
Нечто вроде ДБ написано с использованием boost::any (любой конечный элемент ДБ, то есть содержимое любой ячейки - объект Holder в котором используется boost::any). Захотелось мне это дело сериализовать, а то как-то не коммильфо.
База довольно простая и ограничения на ней - используется только два типа. Числа (int) или строки (string). Как бы поаккуратнее сериализовать объект boost::any (save/load)?
0
|
|
| 21.07.2011, 15:41 | |
|
Ответы с готовыми решениями:
10
boost::serialization serialized via boost::serialization |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 21.07.2011, 19:08 [ТС] | |
|
niXman, Я имею ввиду адекватно, чтобы работало. Пробовал через исключения - то есть пробуем преобразовать в int -> не вышло значит пробуем в string и сереализуем, вышло -> сериализуем int.
При загрузке это было намного проблемнее -> грузим в int -> не вышло -> грузим в string, вышло -> грузим в int и устанавливаем значение внутреннего any потом понял что подход в корне не верен, ибо получал ошибку архива, что и понятно. Пробовал загружать все в строку, затем переводить в int lexical_cast-ом -> тоже потерпел неудачу, в строку грузится все что есть в строке файла (?), итого при попытке сериализовать три числа 5, 25, 15 и загрузки их в строку получил строку 5, 25, 15 и в дальнейшем вылет программы с ошибкой архива, ибо читаю/пишу я вектор таких Holder-ов. Идей как-то практически нет как успешно это сделать.
0
|
|
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 22.07.2011, 07:22 | |
|
Вот сам себе головняк создал. У тебя же всего два известных типа, зачем boost::any, почему не boost::variant?
В принципе, ты же сам пишешь не интрузивную сериализацию. Что тебе мешает сперва сохранить информацию о действительном типе? Тогда при загрузке обойдёшься простым свитчем.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 22.07.2011, 10:13 [ТС] | ||||||
|
niXman, Возможно логичнее да. Возможно так и поступлю.
Deviaphan, Ну пока два... А потом может расширить захочу... Ну да. Тоже вариант Добавлено через 1 час 37 минут Вообщем разрешил с сериализацией примерно так.
0
|
||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
| 22.07.2011, 10:43 | |
|
Т.е. в пределах столбца типы одинаковые? Тогда не мути! Сохраняй кортежами, построчно.
Тогда тебе будет нужно один раз распарсить типы данных для каждого столбца, и потом уже по порядку известные типы сериализовывать. Нынешний вариант никуда не годен, просто представь, какая лапша и рай-кэтчей у тебя получится при добавлении новых типов. Самое объектно-ориентированное решение - не хранить данные непосредственно, а использовать сериализуемую обёртку, вместо boost::any. Полиморфные классы без проблем сериализуются. Чуть больше писанины, зато от переключения типов избавишься. 21 век, всё таки, уже.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 22.07.2011, 14:28 [ТС] | |
|
Deviaphan, Вариант. Буду пробовать.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 06.09.2011, 13:47 [ТС] | ||||||
|
Вернулся к этому. Видимо буду делать как-то так.
1
|
||||||
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||
| 06.09.2011, 14:01 | ||
|
Добавлено через 55 секунд А другой вариант, это вручную назначать каждому типу свой идентификатор и поприветствовать переключение типов.)
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
| 06.09.2011, 15:49 [ТС] | |||||||||||
Сообщение было отмечено ForEveR как решение
Решение
В итоге:
В сериализации Template забыл добавить сериализацию объекта базового класса.
0
|
|||||||||||
| 06.09.2011, 15:49 | |
|
Помогаю со студенческими работами здесь
11
Boost::serialization, как сериализовать std::tuple? Как подключить Boost::serialization в CMakeLists.txt? boost serialization. загрузка данных из архива в std::list boost::serialization. Как сериальзовывать собственные типы данных? boost serialization. Перегрузка save_construct_data и load_constract_data для шаблонных классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|