Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
#1

Сериализация - C++

08.04.2012, 23:57. Просмотров 668. Ответов 3
Метки нет (Все метки)

Что-то я не совсем понял сериализацию.

Использовать код наподобие

C++
1
2
3
4
MyClass m;
 
std::ofstream f ("dump.bin", std::binary);
f.write (&m, sizeof (m));
можно только в том случае, если MyClass является POD-типом? Если да, то почему?

Да и вообще, судя по всему, любые типы, включая фундаментальные, надо сериализовать перед сохранением, т.к. на другой платформе может быть другой порядок байт, разве нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2012, 23:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сериализация (C++):

Сериализация - C++
есть небольшая программа вот структура данных которая в ней используется class table { public: int number,kol,year; ...

сериализация - C++
Нужно записать стек из матриц stack<vector<vector<int> > > в файл, чтобы можно было останавливать и продолжать перебор. Я так понимаю,...

Сериализация - C++
Мне нужно записать объект в файл и считывать из файла в объект. Используя при этом перегрузку операторов файлового в\в (ifstream и...

Сериализация - C++
Доброго времени суток,есть пару вопросов по сериализации. 1. Допустим есть некий класс содержащий вектор структур. В программе...

Сериализация - C++
Не создаётся тема Добавлено через 11 секунд Привет! Вот код, который записывает в динарник структуру и считывает её оттуда, конечно...

Потоки, сериализация - C++
Подскажите хороший источник где можно найти нормальную информацию по данным темам. Гугл предлогать не стоит) 1) Приоритет потока....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
09.04.2012, 00:12 #2
Цитата Сообщение от YourLastSong Посмотреть сообщение
можно только в том случае, если MyClass является POD-типом? Если да, то почему?
для конструирования non-POD типа нужен вызов конструктора
я честно не уверен какие последствия могут, и есть ли они
более важно, чтобы эти типы не соддержали указателей/ссылок на внешние объекты, иначе при сериализации нужно будет сериализировать и их состояние


Цитата Сообщение от YourLastSong Посмотреть сообщение
Да и вообще, судя по всему, любые типы, включая фундаментальные, надо сериализовать перед сохранением, т.к. на другой платформе может быть другой порядок байт, разве нет?
это принципиально только если сохраненный тип будет восстанавливаться на другой машине
YourLastSong
1 / 1 / 0
Регистрация: 12.12.2010
Сообщений: 112
09.04.2012, 00:53  [ТС] #3
более важно, чтобы эти типы не соддержали указателей/ссылок на внешние объекты
Что Вы подразумеваете под внешними объектами? Любые объекты, которые не являются членами данного класса?

это принципиально только если сохраненный тип будет восстанавливаться на другой машине
Ну да, я как раз про это и говорил. Тогда получается, что для действительно платформо-независимого кода необходимо сериализовывать даже переменные фундаментальных типов?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
09.04.2012, 01:07 #4
Цитата Сообщение от YourLastSong Посмотреть сообщение
Что Вы подразумеваете под внешними объектами? Любые объекты, которые не являются членами данного класса?
да, при восстановлении объекта у него окажутся ссылки (адреса) на объекты которых не существует
Цитата Сообщение от YourLastSong Посмотреть сообщение
Тогда получается, что для действительно платформо-независимого кода необходимо сериализовывать даже переменные фундаментальных типов?
по сути да, там little-big-endian итп
я никогда сильно с этим связан не был, но думаю есть смысл почитать про boost::serialization
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2012, 01:07
Привет! Вот еще темы с ответами:

Сериализация данных - C++
Появилась новая проблема. Создаю объект и записываю его в файл через одну функцию: mammal obj(m_s, t_s, s, vod, r, d, v); ...

Сериализация и десериализация структуры - C++
Есть структура с полями string , int. Вся информация пишется в файл.txt, мне нужно сделать сериализацию и десериализацию этого файла. ...

Сериализация массива int - C++
Здравствуйте! Мне необходимо хранить в БД перечень записей содержащую список индексов (типа беззнаковое число, размер может быть...

Сериализация используя Cereal и BASE64 - C++
Доброго времени суток, Использую Cereal для сериализации map'a. В общем все работает так: std::ofstream file("out.bin",...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.04.2012, 01:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru