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

Как записывать и считывать не POD типы данных из бинарного файла? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Решения по Дейтелам http://www.cyberforum.ru/cpp-beginners/thread594591.html
Ребят, такой вопрос, купил книгу Deitel H.M., Deitel P.J. / Дейтел Х.М., Дейтел П.Дж. - Как программировать на С++, очень много заданий, что хорошо, но нет к ним решения в самой книге, то есть не...
C++ Округлить выводимые данные Надо сделать что если х у вводиш милионами числами выводило норм.. спасайте вообще хз как #include <iostream> #include <math.h> #include <conio.h> #include <iomanip> using namespace std;... http://www.cyberforum.ru/cpp-beginners/thread594583.html
C++ Используя одномерные массивы, составить программу
Используя одномерные массивы, составить программу. Есть массив n чисел. Вычислить сумму отрицательных элементов массива. C++ C#
Оптимизация цикла (перебор 5000000 элементов) C++
Можно ли как-то оптимизировать данный цикл? for (i=10000000; i<15000000; i++) { for (k = i, j = 0; j < 8; j++, k /= 10) mas = k % 10; if (mas+mas+mas + mas ==...
C++ На плоскости задана своими координатами точка. Указать, где она расположена http://www.cyberforum.ru/cpp-beginners/thread594556.html
Можете помочь????Решить 2 задачи...На с++...Заранее Спасибо!!! 1. На плоскости ХОY задана своими координатами точка А. Указать, где она расположена (на какой оси или в каком координатном угле. 2....
C++ 8-и значное число типа int преобразовать в строчку char\string Подскажите, есть ли какая-нибудь функция, которая загоняет число в строчку. Например есть 8-и значное число (тип int) и мне нужно его запихать в переменную string типа. Желательно без делений :\ подробнее

Показать сообщение отдельно
Derpy
3 / 3 / 0
Регистрация: 25.12.2011
Сообщений: 20

Как записывать и считывать не POD типы данных из бинарного файла? - C++

03.06.2012, 22:02. Просмотров 730. Ответов 3
Метки (Все метки)

Есть класса в котором часть полей не базовых динамических типов например vector list и подобные.
Как записать экземпляр класса в бинарный файл чтобы потом его нормально считать?
Через boost serialization? Или есть другие варианты?
Если делать через fwrite\fread считываются только поля базового типа.

Добавлено через 10 часов 24 минуты
Пример проблеммы
C++
1
2
3
4
5
6
7
8
9
10
class A
{
 int val;
}
 
class B
{
 string name;
 vector<A> v;
}
В данном случае нужно записать класс B

Добавлено через 11 часов 8 минут
Такой вариант для записи вектора работает но можно ли сделать как нибудь проще?
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
class A
{
    int val;
public:
    void write(ostream& f) const
    {
        f.write((char*)&val, sizeof(int));
    }
};
 
class B
{
    string name;
    vector<A> v;
public:
    void write()
    {
        ofstream f("dump.bin", ios_base::binary);
        size_t name_size = name.size();
        f.write((char*)&name_size, sizeof(size_t));
        for (int i = 0; i != name.size(); ++i)
        {
            f.write((char*)&name[i], sizeof(char));
        }
        size_t vec_size = v.size();
        f.write((char*)&vec_size, sizeof(size_t));
        for (int i = 0; i != v.size(); ++i)
        {
            v[i].write(f);
        }
    }
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru