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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
#1

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

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

C++ Как записать структуру в файл?
Как записать в файл FileWrite(...) ? C++
C++ Как записать картинку в файл
C++ Как записать string в файл?
Как записать результат в файл C++
C++ Класс "Комплексное число". Как считать и записать данные в файл?
Как записать в файл данные? C++
C++ Как записать класс в файл?
Как класс string записать в бинарный файл через вектор? C++
Sos! Записать класс Stack в файл, "крашит" C++
C++ Как считать и записать в файл?
Как записать файл в массив? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.03.2013, 01:02     Как записать в файл класс? #5
Teacher269, я кажется понял, что Вам нужно. Почитайте про сериализацию и POD-типы.
alsav22
5410 / 4806 / 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     Как записать в файл класс?
Ответ Создать тему
Опции темы

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