![]() |
|
|
![]()
|
|
| zedx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 29.11.2007 Репутация: нет Всего: нет |
К примеру, имеем структуру из n полей. Пусть каждое поле - массив из какого либо числа строк (задаётся динамически). Нам надо сохранить структуру в файл, а затем загрузить её обратно. Причём, если какое-либо из n полей небыло проинициализировано на момент сохранения, то загрузив структуру из файла мы должны также получить неинициализированное поле.
Суть в том, что при записи структуры в файл происходит следующее: каждое поле нумеруется по порядку от 1 и снабжается идентификатором типа данных (int, double, str и проч.). Получается своеобразная метка (ID) поля и в файл пишется сперва эта метка, а затем значение поля (если это строка или вложенная структура - впереди указывается размер). Если наше поле - массив, то каждый элемент массива получает одну и ту же метку. Таким же образом происходит и чтение структуры - считываются все метки из файла и соответствующие им поля структуры наполняются данными (либо остаются неинициализированными если соответствующей метки в файле не нашлось). Я хочу узнать, есть ли в стандартных функциях Qt нечто подобное или данный функционал был реализован самостоятельно и является неким ноу-хау. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
есть QDataStream Причём в начало этого потока они ещё записывают версию упаковщика (сериализатора), для того, чтобы знать при распаковке (десериализации), что структура записи (ID типа, размер и т.п.) будут совпадать. Вот тут типы, которые Qt умеет сериализовывать. При этом сериализацию любого типа ( своего, например ) можно дописать, создав свой оператор
Это сообщение отредактировал(а) borisbn - 26.12.2010, 00:39 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |