Russian Qt Forum
Ноябрь 26, 2024, 07:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: чтение и запись бинарного файла  (Прочитано 5229 раз)
qteshnik
Гость
« : Октябрь 04, 2011, 08:05 »

Возможно ли записать объект(объект содержит поля и гетеры/сетеры на них) в бинарный файл, что каждое поле в ручную не записывать.
Записан
qteshnik
Гость
« Ответ #1 : Октябрь 04, 2011, 08:50 »

прочитал тут, что можно использовать QDataStream  перегружая операторы <<и>> для своих пользовательских типов, так что думаю вопрос снят
Записан
qteshnik
Гость
« Ответ #2 : Октябрь 04, 2011, 11:40 »

правда реализовать не получилось
вот пользовательский класс
Код
C++ (Qt)
class UserInfo
{
public:
   UserInfo();
   void setUserName(QString name);
   QString getUserName();
private:
   QString name;
};
QDataStream &operator<<(QDataStream &out, const UserInfo &UserInfo);
QDataStream &operator>>(QDataStream &in, const UserInfo &UserInfo);
#endif // USERINFO_H
вот реализация перегруженного метода
Код
C++ (Qt)
......................
QDataStream &operator << (QDataStream &out, const UserInfo &painting){
   out << painting.getUserName();
   return out;
.....................
}

теперь мне нужно к примеру из некого класса записать и прочитать данные(UserInfo) в файл, а вот как не понял, подскажите.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Октябрь 04, 2011, 11:44 »

Код
C++ (Qt)
QDataStream stream;
................
UserInfo info;
................
stream << info;
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qteshnik
Гость
« Ответ #4 : Октябрь 04, 2011, 12:01 »

Код
C++ (Qt)
QDataStream stream;
................
UserInfo info;
................
stream << info;
 
хм странно мне говорит
ошибка: no match for ‘operator>>’ in ‘stream >> UserInfo::getInstance()’
забыл сказать что класс UserInfo singleton поэтому  UserInfo::getInstance(), ну думаю дело не в этом
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 04, 2011, 12:17 »

прочитал тут, что можно использовать QDataStream  перегружая операторы <<и>> для своих пользовательских типов, так что думаю вопрос снят
Так или иначе записывать каждое поле придется (и экономить на этом будет себе дороже), просто операторы позволят сделать это лучше. Напр. если у Вас член класса стандартный Qt тип, то можно воспользоваться уже готовыми для него операторами. 

Если Вы надеетесь дожить до версии 2.0 (или хотя бы 1.5) - не забудьте записать версии своих структур
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.277 секунд. Запросов: 22.