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

Запись в собственного класса бинарный файл собственного - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удаление Узла бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread750193.html
Добрый вечер. Имеем Бинарное дерево поиска. При удалении некоторого узла . возникают три случая. Один из случаев , наличие у удаляемого узла обоих дочерних узлов. При удалении такого узла ....
C++ Оператор break как оператор go to next Подскажите, в этом примере break эквивалентна действию оператора go to next? http://www.cyberforum.ru/cpp-beginners/thread750188.html
Создание программы для С++ C++
Помогите пожалуйста - мне надо откомпилировать файл моей программы в Borland C++. Помогите пожалуйста, жду
Принцип 3d программ C++
Хочеться сделать программу там где ты ходиш в мелкой комнатке с стенками для освоения зд программ. А как принцып какой? там матрица какаято или че?
C++ Площадь фигуры ограниченной кусочно-линейной функцией и осью абсцисс http://www.cyberforum.ru/cpp-beginners/thread750166.html
Нужно написать программу, которая бы методом трапеций вычисляла площадь фигуры ограниченной графиком показанным на рисунке и x=0. Интервал - Функции нашёл: на интервале (-беск;-2) y=-2.5x-6 ...
C++ Узнать что стоит на определённом месте (0 или 1) Уважаемые программисты! Помогите исправить код или решить задачу. Представим себе бесконечную последовательность цифр, составленную из записанных друг за другом возрастающих степеней десятки. Вот... подробнее

Показать сообщение отдельно
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
31.12.2012, 01:21
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <cstdio>
#include <iostream>
#include <string>
#include <fstream>
#include <stdexcept>
#include <vector>
 
class Fraction
{
private:
    int *rational;
public:
    Fraction();
    Fraction(int, int, int);
    Fraction(const Fraction&);
    ~Fraction();
    bool Serialize(std::ofstream&) const;
    bool Deserialize(std::ifstream&);
    void Print() const;
};
 
Fraction::Fraction()
{
    rational = new int[3];
    rational[0]= 0; //целая часть
    rational[1]= 0; //числитель
    rational[2]= 0; // знаменатель
 
}
 
Fraction::Fraction(int a, int b, int c)
{
    rational = new int[3];
    rational[0]=a;
    rational[1]=b;
    rational[2]=c;
}
 
Fraction::Fraction(const Fraction& x)
{
    rational = new int[3];
    rational[0]=x.rational[0];
    rational[1]=x.rational[1];
    rational[2]=x.rational[2];
}
 
Fraction::~Fraction()
{
    delete[] rational;
}
 
void Fraction::Print() const
{
    printf("%d   %d/%d \n",rational[0],rational[1],rational[2]);
}
 
bool Fraction::Serialize(std::ofstream& ofs) const
{
    bool ret = true;
    if(!ofs.write((char const*)rational, sizeof(int) * 3))
    {
        std::cerr << "write failed: "<< std::endl;
        ret = false;
    }
    return ret;
}
 
bool Fraction::Deserialize(std::ifstream& ifs)
{
    bool ret = true;
    ifs.read((char*)rational, sizeof(int) * 3);
    if(ifs.gcount() != sizeof(int) * 3)
    {
        std::cerr << "read failed" << std::endl;
        ret = false;
    }
    return ret;
}
 
int main()
{
    std::vector<Fraction> v{Fraction(1,2,3), Fraction(11,22,33)};
    std::string filename = "out.txt";
    std::ofstream ofs(filename.c_str(), std::ios::binary);
    if(ofs.is_open())
    {
        for(auto const& val : v)
        {
            val.Serialize(ofs);
        }
        ofs.close();
    }
    else
        std::cerr << "Unable to open output file" << std::endl;
    std::vector<Fraction> vres;
    std::ifstream ifs(filename.c_str(), std::ios::binary);
    if(ifs.is_open())
    {
        Fraction f;
        for(size_t i = 0; i < v.size(); ++i)
        {
            f.Deserialize(ifs);
            vres.push_back(f);
        }
        ifs.close();
    }
    else
        std::cerr << "Unable to open input file" << std::endl;
    for(auto const& val : vres)
    {
        val.Print();
    }
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru