Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2

Вопросы сериализации

12.11.2012, 20:32. Показов 2361. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Ноги здесь: Везде говорится, что структуры и классы отличаются только типом доступа к членам по умолчанию


Цитата Сообщение от silent_1991 Посмотреть сообщение
НеСказочник, если вы возьмёте свой код и замените в нём слово class на struct, то увидите, что свойство сохраняется. Сложные данные, требующие собственной логики копирования, никогда правильно скопированы не будут, ни в структуре, ни в классе.
Кстати, по этой теме. А если мне надо загнать довольно сложный класс в массив байт, что бы потом его сохранить в файл. Есть ли какие-то стандартные инструменты кроме класса для работы с JSON. JSON просто текстом сохраняет, а там может быть много разных данных, некрасиво получится.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2012, 20:32
Ответы с готовыми решениями:

Метод сериализации
Помогите найти пинфу по Методу сериализации

Поясните по сериализации
В boost::serialization Нужно слить мап в файл. Простите за тупой вопрос, но нужно прописывать сериализацию для каждого класса...

По поводу сериализации
Может кто-то объяснить, в чем разница между сериализацией, маршаллингом и методами write/read из std::ofstream/std::ifstream?

22
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
12.11.2012, 21:28  [ТС]
Студворк — интернет-сервис помощи студентам
Кстати, я щас вспомнил, что в стареньком Turbo pascal была таки стандартная сериализация. По крайней мере экземпляры сложных структур я там сохранял в файл буквально парой движений. Интересно, почему в C такого не предусмотрели? Потоки ведь есть. Не ужели настолько хотели облегчить, что даже это посчитали лишним?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.11.2012, 21:36
НеСказочник, не уж то и объекты, выделенные динамически, сохранялись?
Вообще объекты, типы которых не используют виртуальность (в наследовании и в полиморфизме), которые не содержат выделенных динамически данных (или статических данных, содержащих динамические данные), в общем, объекты, которые полностью (рекурсивно, если можно так выразиться) лежат в автоматической памяти, можно перевести в поток байтов так:

C++
1
char *simple_object_bytes = reinterpret_cast<char *>(&simple_object);
Размер такого байтового массива будет sizeof(simple_object). Восстановить такой объект можно через memcpy, например.

Добавлено через 2 минуты
Но это тоже компиляторозависимо. Кто его знает, как там компилятор перетасует поля объектов. В общем, лучше всего использовать универсальные алгоритмы сериализации. Для передачи по сети, например, лучше перегонять в поток байтов. А для сохранения состояния объекта на диск можно ограничиться и переводом в XML.
0
60 / 48 / 13
Регистрация: 12.11.2012
Сообщений: 373
Записей в блоге: 2
12.11.2012, 21:39  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
НеСказочник, не уж то и объекты, выделенные динамически, сохранялись?
Вообще объекты, типы которых не используют виртуальность (в наследовании и в полиморфизме), которые не содержат выделенных динамически данных (или статических данных, содержащих динамические данные), в общем, объекты, которые полностью (рекурсивно, если можно так выразиться) лежат в автоматической памяти, можно перевести в поток байтов так:

C++
1
char *simple_object_bytes = reinterpret_cast<char *>(&simple_object);
Размер такого байтового массива будет sizeof(simple_object). Восстановить такой объект можно через memcpy, например.
Там можно было создать/открыть файл тремя способами:
- текстовый. Сохраняется текст. Ничего нового.
- бинарный. Опять ничего нового. Массив байт.
- Типовой. При создании объекта, обеспечивающего сохранение файла ему нужно передать тип. Что передадите с тем и работает.


Нам ещё тогда в универе (тогда я ещё учился) на вопросы "Как читать файл?" препод отвечал "А как писали, так и читайте."
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2012, 21:39

Ищу литературу по интерфейсам, делегатам, сериализации и т.п. применительно к C++
Добрый вечер. Подскажите, есть ли какая литература по интерфейсам, делегатам, сериализации и т.д., как и когда их применять на практике, но...

Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились
Кто знает ребят подскажите в чем проблема, есть метод обновляющий текст в TextView (всего 6 вопросов). Так вот когда вопросы кончаются...

Ошибка сериализации
Здравствуйте! Приложение выбрасывает исключение и я не могу понять почему:В месте: lock (sLock) { bmp =...

По поводу сериализации
Когда я сериализую обьект, в котором вложены другие объекты разных типов классов, а потом его десериализую и присваиваю новому обьекту (как...

Подобие сериализации
Привет!Вот я прохожу сервис жавараш,на уровне -сериализация.Там сперва учат как просто сохранить объект в файл.Таким образом Сегодня мы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru