|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.01.2011, 23:43 | #1 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Десериализация
Здравствуйте, уважаемые форумчане!
Недавно решил заняться с++ после дельфей и возникло желание/необходимость сделать десериализацию класса. Точнее, нужно, зная имя поля класса, прочитать из файла значение(соответствующее типу поля) и присвоить соответствующему полю. В идеале хочется получить основной код в виде наподобие этого: Код:
Заранее спасибо!
Изобретатель велосипедов
|
02.02.2011, 10:50 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Всё ещё актуально
Изобретатель велосипедов
|
02.02.2011, 11:19 | #3 |
Новичок
Джуниор
Регистрация: 30.01.2011
Сообщений: 8
|
молодец, но не понятно что такое десериализация класса?
Что бы присвоить какие то значения приватному полю(аттрибуту) класса обычно используют метод присвоения например полю класса int value; в приватном секции, что бы присвоет значение можно применить метод MyClass::SetValue(int a){value = a} метод должен быть объявлен в классе, в его публичной части, а читать из файла есть много разных способов, по этому много примеров. stdio.h FILE out; fopen(out,"file","w+"); ну или что-то типо того, это открытие файлового потока, ну а дальше fscanf()//синтаксис не помню погляди в библиотеки. fstream типы файловых потоков ifstream на чтение с файла, ofstream для вывода, fstream будет таким какой определишь, ну и там смотри в интернете, лень сейчас искать. |
02.02.2011, 14:07 | #4 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
Selestis, у меня лично при иерархии классов: Код:
virtual signed long long Serialize(Stream*dest); virtual signed long long DeSerialize(Stream*source); далее классы Stream и String переопределяют их, так как надо(у меня просто каждый тип класса еще сохраняет свою метку, чтоб было возможным проверить данные при обратной загрузке, сохраняю бинарно) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
02.02.2011, 15:28 | #5 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Пепел Феникса, вы сказали что у вас у классов есть переопределенные функции загрузки из потока, а как собственно они устроены? Т.е. не писать же для каждого класса по очереди присвоение всех полей, иначе сам смысл этого немного теряется... Или я что-то не так понял?
P.S. Может я неверно выразился в 1 посте... По сути, то что мне нужно - это зная строку(имя поля), присвоить значение отдельному полю... Десериализовать весь объект вобщем-то не требуется. Предполагается, что в файле есть список поле-значение объекта, причем не все и не подряд. Вот как-то так....
Изобретатель велосипедов
Последний раз редактировалось Selestis; 02.02.2011 в 15:34. |
02.02.2011, 15:40 | #6 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
для потока размер данных и собственно данные. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
02.02.2011, 16:02 | #7 | |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Цитата:
Изобретатель велосипедов
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сериализация в одной программе и десериализация в другой | Casper-SC | Общие вопросы .NET | 5 | 30.05.2010 20:31 |
C# и Xml десериализация | DeCo | Общие вопросы .NET | 2 | 17.03.2010 00:55 |
сериализация и десериализация | radiantor | Работа с сетью в Delphi | 7 | 02.08.2008 00:27 |