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

Чтение структуры из бинарного файла - C++

Восстановить пароль Регистрация
 
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
17.08.2014, 11:46     Чтение структуры из бинарного файла #1
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main(void)
{ 
     setlocale (0,"");
     
     struct TBook
      {
         string author;
         string title;
         int count;  
      };
     TBook B;
     B.author = "Pushkin";
     B.title = "Polatva";
     B.count = 1;
     
     //cout << "структура B : "<<"author = "<<B.author<<" title = "<<B.title<<" count = "<<B.count<<endl;
     
      ifstream *Fin;
      Fin.open ( "books.dat", ios::binary );
      Fin.read ( (char*) &B, sizeof(B) );
      cout << B.author << " " << B.title << ". " << B.count << "шт.";
      Fin.close();
в файле books.dat уже сохранена описанная структура, пытаюсь ее считать и напечатать. Не получается. компилятор пишет , что не объявлены open, read, close... что добавить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2014, 11:46     Чтение структуры из бинарного файла
Посмотрите здесь:

C++ Чтение из бинарного файла
Чтение из бинарного файла C++
Чтение бинарного файла C++
чтение бинарного файла C++
Чтение 10-ой структуры из бинарного файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14219 / 6234 / 988
Регистрация: 02.05.2013
Сообщений: 10,396
Завершенные тесты: 1
17.08.2014, 11:53     Чтение структуры из бинарного файла #2
1) Fin - это указатель, для доступа к членам класса/cтруктуры через
указатель нужно использовать "->", а не точку.

2) Fin не инициализирован. Получите access violation в лучшем случае.

3) string не получится просто взять и сохранить побайтно в файл, а затем
также просто прочесть оттуда. Это составной класс, который может иметь
указатели на внутренние объекты, те, в свою очередь, тоже.
Другими словами, string - это целый граф объектов, в TBook от
этого графа лежит только одна "вершина".

4) Вместо велосипедостроения используйте Boost.serialization.
Пару часов поразбираться придется, зато сериализация пишется в три строчки.
Поддерживаются STL-контейнеры, сохранение/восстановление полиморфных
типов и многое другое.
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
17.08.2014, 12:08  [ТС]     Чтение структуры из бинарного файла #3
Чтение структуры из бинарного файла
arzhanok
1 / 1 / 1
Регистрация: 10.07.2014
Сообщений: 38
17.08.2014, 12:09  [ТС]     Чтение структуры из бинарного файла #4
Убежденный, если есть возможность, прокомментируйте, это учебник. То что вы написали я еще на проходил, вообще ничего не понял. спасибо
Alexandr_1982
Нарушитель
175 / 71 / 17
Регистрация: 04.11.2013
Сообщений: 383
Записей в блоге: 4
17.08.2014, 17:01     Чтение структуры из бинарного файла #5
У вас не создан объект. Указатель не инициализирован.
C++
1
ifstream *Fin;
Создание объекта производится оператором new , например
C++
1
ifstream *Fin= new ifstream;
Yandex
Объявления
17.08.2014, 17:01     Чтение структуры из бинарного файла
Ответ Создать тему
Опции темы

Текущее время: 10:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru