Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/124: Рейтинг темы: голосов - 124, средняя оценка - 4.91
2 / 2 / 0
Регистрация: 11.10.2010
Сообщений: 35
1

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

22.02.2011, 01:23. Показов 22537. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class my {
int a;
float b;
char c[30];
 
public:
void create()    
{ cout<<"Input a = "; cin>>a; cin.ignore();
cout<<"input b = "; cin>>b; cin.ignore();
cout<<"Input c = "; cin.getline(c,30);
cout<<this<<" created";
}
void show()
{cout<<"a = "<<a<<endl<<"b = "<<b<<endl<<"c = "<<c; getch();}
 
};
 
void main()
{ clrscr();
my obj,obj1;
ofstream  myclass("myfile.txt",ios::binary);
do { cout<<"1. Create obj\n2. Save obj\n3. Open obg\n4. Show obj\n";
switch(getche()) {
            case '1': {obj.create();} break;
         case '2': {myclass.write(reinterpret_cast<char*>(&obj),sizeof(obj));} break;
         case '3': {ifstream my("myfile.txt",ios::binary);  my.read(reinterpret_cast<char*>(&obj1),sizeof(obj1));} break;
         case '4': {obj1.show();} break;
}
}while(255);
getch();
}
Пользовался литературой Лафоре. В итоге файл создается, но он пустой. Ну соответственно я уже молчу о его "считывании".
Или может я не правильно рою?

Мне нужно научиться записывать объекты (ну и массив объектов) в файл. И читать их оттуда. при чем если я массив записал, то соответственно - массив объектов я хочу и восстановить из файла.
Как это удобнее реализовать?
Я нашел путь только через потоки ввода вывода файлов, но не пойму что здесь не так. Может есть еще функция закрытия файла или почему файл все равно пустой?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2011, 01:23
Ответы с готовыми решениями:

Запись и чтение объектов класса в файл С ++
Здравствуйте! Вчера писала сюда по поводу динамического массива, где мне помогли. Сегодня...

Запись и чтение динамических объектов в файл
Как быть, че делать? Особенно при чтение файла, ведь неизвестно какого он размера. И как бы все это...

Запись, чтение объектов в файл через указатели.
не могу прочитать объекты из файла. Сломал голову. Все перепробовал. Препод отправил гуглить)))....

Запись и чтение объектов разных классов в один файл
Здравствуйте. Изучаю С++ по Лафоре. Дошёл до места, где объясняется, как записывать объекты разных...

4
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
22.02.2011, 05:02 2
Цитата Сообщение от iFree
В итоге файл создается, но он пустой.
нужно заполнить структуру, выбрав 1
если надо, вывести её после заполнения на экран
а полноту/пустоту файла определять в hex-viewer'е

Цитата Сообщение от iFree
Может есть еще функция закрытия файла
она есть, но также есть вроде деструктор, который закрывает файл при разрушении объекта
0
2 / 2 / 0
Регистрация: 11.10.2010
Сообщений: 35
22.02.2011, 10:53  [ТС] 3
Может предложите другой способ записи объектов файл? не через потоки?
я просто новичок в С++, здесь это немного иначе, нахватался литературы на быструю руку.

Может быть средствами stdio.h ?
Ну мне нужно бы именно массив загонять.
0
2849 / 1997 / 987
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
22.02.2011, 11:43 4
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
#include <iostream>
#include <fstream>
 
class my {
    int a;
    float b;
    char c[30];
    public:
    friend std::ostream& operator<<(std::ostream& o, my& x){
        std::cout<<"a= "<<x.a<<", b= "<<x.b<<", c= "<<x.c;
    }
    void create(){
        std::cout<<"a = "; std::cin>>a;
        std::cout<<"b = "; std::cin>>b; std::cin.ignore();
        std::cout<<"c = "; std::cin.getline(c, 30);
        std::cout<<*this<<" created\n";
    }
};
 
int main (){
    my o, o1;
    o.create();
    std::ofstream ofs("text.txt", std::ios::binary);
    ofs.write(reinterpret_cast<char*>(&o), sizeof(o));
    ofs.close();
    std::ifstream ifs("text.txt", std::ios::binary);
    if(!ifs){std::cerr<<"File not found"; return 1;}
    ifs.read(reinterpret_cast<char*>(&o1), sizeof(o1));
    ifs.close();
    std::cout<<"o1: "<<o1<<"\n";
}
3
0 / 0 / 0
Регистрация: 18.03.2019
Сообщений: 4
24.03.2019, 00:58 5
В 11 строке надо дописать return o; и все будет красиво
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
#include <iostream>
#include <fstream>
 
class my {
    int a;
    float b;
    char c[30];
public:
    friend std::ostream& operator<<(std::ostream& o, my& x) {
        std::cout << "a= " << x.a << ", b= " << x.b << ", c= " << x.c;
        return o;
    }
    void create() {
        std::cout << "a = "; std::cin >> a;
        std::cout << "b = "; std::cin >> b; std::cin.ignore();
        std::cout << "c = "; std::cin.getline(c, 30);
        std::cout << *this << " created\n";
    }
};
 
int main() {
    my o, o1;
    o.create();
    std::ofstream ofs("text.txt", std::ios::binary);
    ofs.write(reinterpret_cast<char*>(&o), sizeof(o));
    ofs.close();
    std::ifstream ifs("text.txt", std::ios::binary);
    if (!ifs) { std::cerr << "File not found"; return 1; }
    ifs.read(reinterpret_cast<char*>(&o1), sizeof(o1));
    ifs.close();
    std::cout << "o1: " << o1 << "\n";
}
0
24.03.2019, 00:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2019, 00:58
Помогаю со студенческими работами здесь

Сериализация объектов с полями std::string + запись/чтение в файл
Здравствуйте! Есть класс: class Guest { private: std::string login;

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

Запись и чтение объектов в файл из ArrrayList
Подскажите как организовать чтение и запись в файл из ArrayList.

Чтение/запись массива объектов в файл
Сделал процедуру, а она выдает ошибку при вызове &quot;В экземпляре объекта не задана ссылка на...

Запись в файл из массива объектов и чтение обратно в массив
Прошу помощи Приблизительно вот такой код class A { public int Element { get;...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru