| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Запися/чтение объектов класса |
| Автор: Гость_User 18.9.2005, 11:23 |
| Если есть некоторый объект object класса class_name с элементами-данными, и эти данные необходимо записывать, а затем считывать из файла будет ли корректно использование конструкций write(f_handler, object, sizeof(class_name)) , затем где-нибудь read(f_handler, object2, sizeof(class_name)) или надо данные по отдельности записывать? |
| Автор: srd 18.9.2005, 12:31 |
| В общем случае - нельзя. |
| Автор: kometa_triatlon 18.9.2005, 12:59 |
| Здесь лучше всего использовать MFC-классы CArchive, CFile и сериализацию. |
| Автор: ST1 18.9.2005, 13:25 | ||
Надо только на чистом C/C++. Как бы записать данные в инкапсулированном виде, не поотдельности. А по отношению к структуре write/read годится? |
| Автор: srd 18.9.2005, 13:54 | ||
Попробуй boost::serialization. Правда может оказаться, что для твоих задач это слишком мощная библиотека - как забивание гвоздей микроскопом |
| Автор: ST1 18.9.2005, 14:51 | ||
Да действительно, это слишком круто. Неужели встроенными средствами C, записать данные объекта класса с дальнейшим корректным чтением нельзя. |
| Автор: Denn 18.9.2005, 15:15 |
| ST1 у тебя в классе могут быть указатели, как их можно будет восстановить простым чтением класса в память? Сериализация MFC не настолько проста, как кажется. там также приходится в конкретных случаях делать чтение / запись в CArchive непосредственно, думаю, это не сильно будет отличаться от read / write стандартных библиотек. |
| Автор: maxim1000 18.9.2005, 15:18 | ||
конечно, можно - записывать по одному полю... различные значения так или иначе надо писать в каком-то формате вот, например, вопрос: как сохранять указатель? 1. сохранить объект, на который он указывает 2. сохранить что-то вроде индекса этого объекта (может, он уже был сохранен) 3. иногда даже может понадобиться сохранять реальное значение указателя так что в любом случае надо как-то сообщить, что именно нужно делать с каждым полем... а раз так, то можно это сделать частью кода сохранения конкретного поля... |