Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
#1

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

30.03.2013, 20:01. Просмотров 459. Ответов 5
Метки нет (Все метки)

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"
Как проще всего реализовать такую задачу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 20:01
Ответы с готовыми решениями:

Как записать класс в файл?
Вот допустим есть класс class LOL { private: bool h; int s; public:...

Как класс string записать в бинарный файл через вектор?
вопрос такой у меня есть класс. я создаю вектор по этому классу...

Класс "Комплексное число". Как считать и записать данные в файл?
Надо переделать код программы, чтобы данные шли из входного файла и...

Файл: Есть 5 классов, как их записать в текстовый файл?
Ребята пожалуйста кто знает как разобраться с файлами. Есть 5 классов как их...

Sos! Записать класс Stack в файл, "крашит"
Ребятки!! Помогайте! Не могу разобраться с записью\чтением в файл(методы Read...

5
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 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)
0
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 );
}
или есть способ по-изящней?
0
Anonunfeeling
0 / 0 / 0
Регистрация: 31.03.2013
Сообщений: 16
31.03.2013, 00:52 #4
class ...
{ofstream FILE ("file",ios::app);
FILE<<и то что нада записать также и реалезация
}
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.03.2013, 01:02 #5
Teacher269, я кажется понял, что Вам нужно. Почитайте про сериализацию и POD-типы.
1
alsav22
5441 / 4836 / 831
Регистрация: 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)
0
31.03.2013, 06:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2013, 06:18

создать файл 1.part и записать в него первые x элементов массива. После чего, создать второй файл 2.part, куда записать оставшиеся в массиве элементы.
Не могу понять почему не работает вот этот кусок текста. ofstream q...

Как записать результат в файл
здравствуйте! имеется код на С++, все работает, результат выводит на экран.. но...

Как записать string в файл?
Добрый день, есть код программы, необходимо записать строку в текстовый файл. У...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru