crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> сохранение контейнера объектов в файл
__ilya__
  опции профиля:
сообщение 21.8.2012, 11:25
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


есть некий класс или даже структура в которой есть несколько полей QStrinq, int, double
class Data
{
public:
    QString s1, s2, s3;
    int i1, i2, i3;
    double d1, d2, d3;
};

в другом классе будет контейнер таких объектов
class Widget:public QWidget
{
    Q_OBJECT
    
    QVector<Data>data;
};

я не привел конструктор и методы добавления, удаления объектов, для этого специальные слоты будут.

Собственно вопрос -как мне сохранить содержимое всего контейнера, из этих объектов в файл?
Да и из файла считывать, тоже надо

Сообщение отредактировал __ilya__ - 21.8.2012, 11:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
__ilya__
  опции профиля:
сообщение 21.8.2012, 12:03
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 57
Регистрация: 19.1.2012
Пользователь №: 3143

Спасибо сказали: 0 раз(а)




Репутация:   0  


понял.
Но как мне перегрузить операторы >> и <<?
я вообще понятия не имею как и что они делать должны
Да и вообще не понятно как мне контейнер таких структур загружать?

Сообщение отредактировал __ilya__ - 21.8.2012, 12:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 21.8.2012, 12:15
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(__ilya__ @ 21.8.2012, 13:03) *
понял.
Но как мне перегрузить операторы >> и <<?
я вообще понятия не имею как и что они делать должны

QDataStream & operator << ( QDataStream & stream, const Data & value )
{
    return stream
        << value.s1
        << value.s2
        << value.s3
        << value.i1
        << value.i2
        << value.i3
        << value.d1
        << value.d2
        << value.d3;
}

QDataStream & operator >> ( QDataStream & stream, Data & value )
{
    return stream
        >> value.s1
        >> value.s2
        >> value.s3
        >> value.i1
        >> value.i2
        >> value.i3
        >> value.d1
        >> value.d2
        >> value.d3;
}


если определять члены, как приватные, то нужно еще определение

class Data
{
    friend QDataStream & operator << ( QDataStream & stream, const Data & value );
    friend QDataStream & operator >> ( QDataStream & stream, Data & value );

private:
    QString s1, s2, s3;
    int i1, i2, i3;
    double d1, d2, d3;
};


Цитата(__ilya__ @ 21.8.2012, 13:03) *
Да и вообще не понятно как мне контейнер таких структур загружать?


QDataStream stream( &device );

QVector< Data > contaner;

// чтение
stream
    >> contaner;

...

// запись
stream
    << contaner;


Сообщение отредактировал ssoft - 21.8.2012, 12:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vinnitu
  опции профиля:
сообщение 28.8.2012, 14:49
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 15
Регистрация: 26.3.2008
Пользователь №: 132

Спасибо сказали: 0 раз(а)




Репутация:   0  


2ssoft можно в личку?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 7:32