Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
-6 / 22 / 7
Регистрация: 16.12.2016
Сообщений: 716
1

Запись и чтение объекта класса в файл и из файла

30.10.2018, 20:39. Просмотров 3071. Ответов 9
Метки нет (Все метки)


У меня есть std::list состоящий из объектов типа Person это база о людях.
Нужно реализовать два метода, запись всей базы в файл, и загрузка базы из файла.
Я могу реализовать разбор строк и нудную работу с копированием, однако был найдет более элегантный способ решения, это запись самого объекта в бинарной форме в файл, соответственно, позже эту бинарную форму придавать объекту при считывании, но код не работает, метод save вроде сохраняет эроглифы в файл но когда выбираю load все крашится
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void Base::load(const std::string & filename)
{
    bd.clear();
    ifstream fin;
    fin.open(filename);
    if (!fin.is_open())
    {
        cout << "Error with file open" << endl;
    }
    else
    {
        Person p;
        while (fin.read((char*)&p, sizeof(Person)))
        {
            bd.push_back(p);
        }
 
    }
    fin.close();
}
void Base::save(const std::string & filename)
{
    ofstream fout;
    fout.open(filename);
    if (!fout.is_open())
    {
        cout << "Error with file open" << endl;
    }
    else
    {
        for (std::list<Person>::iterator it = bd.begin(); it != bd.end(); it++)
        {
            Person p(it->get_surname(), it->get_name(), it->get_gender(), it->get_dateof(), it->get_passnum());
            fout.write((char*)&p, sizeof(Person));
        }
    }
    fout.close();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2018, 20:39
Ответы с готовыми решениями:

Запись объекта класса в файл и чтение из файла (Вызвано необработанное исключение: нарушение доступа для чтения)
Доброго времени суток. Вообщем-то есть некий класс Weapons: class Weapons { public: void...

Сохранение и чтение объекта класса в файл/из файла
Добрый день! Столкнулся с проблемой сохранения объекта класса в файл, и последующего его...

Запись и чтение объекта в файл
у меня есть класс A,как мне записать в файл несколько объектов этого класса а потом их считать?

Чтение данных для объекта класса из файла
Доброе время суток, подскажите метод как прочитать из бинарного файла некий текст в обьект своего...

9
6917 / 5982 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2018, 21:20 2
Так не будет работать. Делай лучше с текстовым файлом.
0
-6 / 22 / 7
Регистрация: 16.12.2016
Сообщений: 716
30.10.2018, 21:28  [ТС] 3
Так не хочется этого делать, данный метод по интереснее выглядит, а почему не работает есть ответ?
0
6917 / 5982 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2018, 21:29 4
Как этот Person объявлен?
0
-6 / 22 / 7
Регистрация: 16.12.2016
Сообщений: 716
30.10.2018, 21:35  [ТС] 5
Как класс или про что вы именно?
0
6917 / 5982 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2018, 21:38 6
Поля там каких типов? Показывай.
0
-6 / 22 / 7
Регистрация: 16.12.2016
Сообщений: 716
30.10.2018, 21:40  [ТС] 7
Поля там std:string ща приеду домой покажу весь код
0
6917 / 5982 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2018, 21:42 8
Этого достаточно. Внутреннее представление не позволяет записать так, как ты пытаешься. Проще всего использовать текстовый файл.
0
-6 / 22 / 7
Регистрация: 16.12.2016
Сообщений: 716
30.10.2018, 21:46  [ТС] 9
Ну это классика ладно буду делать через текст но я расстроен этим, такая конструкция только для полей примитивных данных да?
0
6917 / 5982 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
30.10.2018, 21:54 10
Лучший ответ Сообщение было отмечено SadiQ228 как решение

Решение

Классика только для древних типов как int и char. Но есть мнение, что класс вообще нельзя записывать целиком.
Такой способ применялся для структур в языке C.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2018, 21:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Запись в файл объекта класса
Добрый вечер,предположим есть подобный класс,с полями : const SIZE = 10; class myClass { ...

Запись объекта класса в файл
Доброго времени суток! нужно сохранить объект вот такого класса: class Act { public: ...

Запись объекта класса в файл
Здравствуйте, может кто-нибудь помочь с данным вопросом? Как мне записать в файл строку, которая...

Запись в файл объекта класса
class Object { private: int myN; std::vector&lt;std::string&gt; myLines; public: ...


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

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

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