Форум программистов, компьютерный форум CyberForum.ru

Как записать в файл класс? - C++

Восстановить пароль Регистрация
 
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
30.03.2013, 20:01     Как записать в файл класс? #1
C++
1
2
3
4
5
6
7
8
9
10
11
class _someclass{
public:
...
}
class _mainclass{
piblic:
_someclass *sc;
int n;//размер\количество sc
}
...
_mainclass mc;
Нужно записать "mc" в файл... причем класс _someclass может также содержать указатели на другие объекты и строки типа "char* name"
Как проще всего реализовать такую задачу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
30.03.2013, 20:05     Как записать в файл класс? #2
Teacher269, не очень понятно в чем проблема, если честно.
Определения классов должны заканчиваться точкой с запятой:
C++
1
2
3
4
5
6
7
8
9
class _someclass{
public:
...
}; // здесь точка с запятой
class _mainclass{
public:
_someclass *sc;
int n;//размер\количество sc
} ; // и здесь точка с запятой
Размещать всё это лучше в заголовочных файлах (*.h, *.hpp)
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
31.03.2013, 00:49  [ТС]     Как записать в файл класс? #3
проблема в том, что сохранятся будет ссылка, а не сами данные.. то есть, если бы было:
C++
1
2
3
4
5
6
7
class _mainclass{
public:
_someclass sc[10];
...
<прочие данные класса>
...
};
тогда можно просто так:
C++
1
2
3
4
5
_mainclass mc;
FILE * pFile;
pFile = fopen ( "myfile.bin" , "wb" );
fwrite (&mc , 1 , sizeof(_mainclass) , pFile );
fclose (pFile);
То есть, можно сказать, одной строчкой fwrite можно записать весь класс разом - очень удобно... но если есть указатели, то запишутся не данные, а ссылка на адрес памяти. То есть получается надо тупо в цикле прогонять типа такого:
C++
1
2
3
for (int i=0;i<ms.n;i++){
fwrite (&ms.sc[i] , 1 , sizeof(_someclass) , pFile );
}
или есть способ по-изящней?
Anonunfeeling
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 16
31.03.2013, 00:52     Как записать в файл класс? #4
class ...
{ofstream FILE ("file",ios::app);
FILE<<и то что нада записать также и реалезация
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
31.03.2013, 01:02     Как записать в файл класс? #5
Teacher269, я кажется понял, что Вам нужно. Почитайте про сериализацию и POD-типы.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.03.2013, 06:18     Как записать в файл класс? #6
Цитата Сообщение от Teacher269 Посмотреть сообщение
Как проще всего реализовать такую задачу?
Перегружать в классах операторы чтения\записи в файл, и в них всё прописывать.

Добавлено через 3 минуты
Цитата Сообщение от Teacher269 Посмотреть сообщение
То есть, можно сказать, одной строчкой fwrite можно записать весь класс разом - очень удобно...
Но не очень правильно...
http://habrahabr.ru/post/142662/
http://www.kalinin.ru/programming/cpp/31_07_00.shtml
Использование #pragma pack(push,1)... pack(pop)
Yandex
Объявления
31.03.2013, 06:18     Как записать в файл класс?
Ответ Создать тему
Опции темы

Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru