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

Сохранение и чтение объекта класса в файл/из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Численные методы http://www.cyberforum.ru/cpp-beginners/thread572608.html
Здравствуйте уважаемые форумчане! Если вас не затруднит, не могли бы вы помочь мне с двумя задачами, просто я сам так и не смог разобраться, как надо делать... :cry: Здраствуйте форумчане! Если кому не сложно, не могли бы вы немного помочь с вышеуказанными заданиями, не пойму, как их делать... 1. Вычислить площадь фигуры ограниченной функциями {f}_{1}\left(x \right)=tg\frac{x}{2} и...
C++ команда удаления строки введенной с клавиатуры на C++ Вот написал программу. Надо удалить строку с данными после ее ввода. Объявил функцию void DelOldDate(), но как написать ее тело для удаления данных с типом возвращаемого значения string itsDateRolic. Заранее спасибо. #include <iostream> #include <cstdlib> #include <string> http://www.cyberforum.ru/cpp-beginners/thread572590.html
Деление больших чисел C++
Доброго времени суток. Спасите пожалуйста, как здесь быть:) Даны два числа. Ваша задача найти частное и остаток от деления. Input В первой строке дано делимое, во второй - делитель. Каждое число может содержать от 1 до 5 000 000 цифр. Все цифры в обоих числах одинаковые. Output Запишите частное в первой строке, а остаток - во второй. Input
C++ Кординаты мыши и нажатие клавишы
у меня 2 вопроса: 1)Как определить координату мышки только по Y и записать её в переменную 2)Как отловить нажатую клавишу, если у меня программа в консоле и я её сворачиваю, и нажимаю mouse3 на рабочем столе. Добавлено через 7 минут UP UP UP Добавлено через 45 минут
C++ Ошибка http://www.cyberforum.ru/cpp-beginners/thread572569.html
Здравствуйте, вот сделал задание, а мне VS2010 выдаёт такую ошибку: First-chance exception at 0x75d1e37d in Tree.exe: 0x40010005: Control-C. Что это?:(
C++ Разобрать пример указателя на символьный массив void main() { const N=256; char S="zzzzz"; char *s={""}; s=&S; *s="xxxxxxxx"; cout<<*s<<endl; подробнее

Показать сообщение отдельно
Kos87
Сообщений: n/a
12.05.2012, 23:29     Сохранение и чтение объекта класса в файл/из файла
Добрый день!

Столкнулся с проблемой сохранения объекта класса в файл, и последующего его чтения.
Задача такая: имеем vector base, в котором есть объекты Person. Нужно писать из вектора в файл, а потом читать из файла в вектор.

В файл вроде все пишет. А вот при чтении вылазит ошибка (скрин ошибки прикреплен внизу).

Буду благодарен за помощь в решении моей проблемы. Может у меня подход не тот, или еще где тупонул ....

Также прикрепляю проект (VisualStudio 2010).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Base.h
#pragma once
#include "Header.h"
#include "Person.h"
 
class Base
{
public:
    Base(void);
    ~Base(void);
    static vector<Person> base;
    static bool successful_add; // контролирует был ли добавлен элемент в вектор
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Base.cpp
#include "Base.h"
 
vector<Person> Base::base;
bool Base::successful_add = false;
 
Base::Base(void)
{
}
 
 
Base::~Base(void)
{
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Person.h
#pragma once
#include "Header.h"
 
class Person
{
public:
    Person(void);
    ~Person(void);
    bool operator<(const Person&) const;
    
    wstring name, surname, phone, full_name;
    int age;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Person.cpp
 
#include "Person.h"
 
Person::Person(void)
{
    age = 0;
}
 
Person::~Person(void)
{
}
 
bool Person::operator<(const Person& p) const
{
    return wcsicmp(full_name.c_str(), p.full_name.c_str()) < 0 ? true : false; // если первая строка меньше второй
}
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
void MainWindow::SaveToFile()
{
    /* пишем в бинарном режиме в файл целым классом как одним блоком */
    ofstream file("base.txt", ios::trunc|ios::binary); //
 
    for(int i=0; i<Base::base.size(); ++i)
    {
        file.write((char*) &Base::base[i], sizeof(Person));
    }
    file.close();
}
 
void MainWindow::LoadFromFile()
{
    ifstream file("base.txt", ios::binary);
    
    if(!file) // проверка - существует ли такой файл
        MessageBox(hDialog, L"File does not exist!", L"Error", MB_OK|MB_ICONERROR);
    else
    {
        /* чистим ListBox и Vector */
        SendMessage(hName_list, LB_RESETCONTENT, 0, 0);
        Base::base.clear();
 
        /* пишем в наш вектор с файла целым классом */
        while(!file.eof() && !file.fail())
        {
            Base::base.push_back(Person());
            file.read((char*) &Base::base.back(), sizeof(Person));
            
            /* выводим элемент в ListBox */
            ListBox_AddString(hName_list, Base::base.back().full_name.c_str());
        }
 
        file.close();
    }
}
Миниатюры
Сохранение и чтение объекта класса в файл/из файла  
Вложения
Тип файла: zip PersonalInfo.zip (1.11 Мб, 29 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru