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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Саймон
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 8
#1

ifstream, ofstream и объекты класса - C++

05.04.2012, 00:43. Просмотров 1225. Ответов 3
Метки нет (Все метки)

Доброго времени суток, помогите пожалуйста разобраться.

Есть некий класс:
C++
1
2
3
4
5
6
7
8
9
class Tr {
public:
Tr(){}
~Tr(){}
 
private:
char* one;
char* two;
}
и несколько объектов этого класса, которые я хочу сохранить в бинарный файл:

C++
1
2
Tr one;
Tr two;
Как сохранить/загрузить один объект - я понимаю:
C++
1
2
3
4
5
6
7
ofstream outn("test.df", std::ios::out | std::ios::binary);
outn.write((char*) &one, sizeof(Tr));
outn.close();
 
ifstream intn("test.df", std::ios::in | std::ios::binary);
intn.read((char*) &one, sizeof(Tr));
intn.close();
А вот как поступить когда есть несколько объектов? Я так понимаю, нужно узнать размер записанного объекта и переместить на этот размер курсор, после чего осуществить запись или чтение, а вот как это сделать никак не могу понять.

Пробовал переместить курсор так:
C++
1
outn.seekp(sizeof(Tr), std::ios::beg | std::ios::binary);
Но ничего не получилось. И так же задаюсь вопросом, что если программа заранее не знает какого размера объект записан в файле, как ей сообщить об этом? Есть какие-то мысли на счет записывания где-нибудь в другом файле (или в этом же) размеров и количества записанных объектов, но честно говоря не очень до конца понимаю реализацию. Подскажите кто, что может, буду рад любой помощи, если не сложно помогите кодом. Заранее благодарю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2012, 00:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ifstream, ofstream и объекты класса (C++):

C++ файлы ifstream/ofstream запись класса - C++
Доброе время суток дамы и господа :) необходимо помочь ибо что-то голова не варит )) класс #pragma once #include <iostream> using...

ifstream ofstream - C++
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске

C++ файлы ifstream/ofstream - C++
Доброе время суток нужна небольшая помощь с записью/считыванием из файла вообщем при считывание из файла eof() не определяет конца файла и...

Перегрузка ifstream и ofstream? - C++
Есть класс //test.h cass test { private: int i; string st; public:

ifstream/ofstream/fstream - C++
#include <fstream> fstream autosave; autosave.open("...autosave.txt"); char x; autosave << x; cout >>...

Сокращенная запись ifstream и ofstream - C++
#include <fstream> using namespace std; int main() { fstream I("input.txt"), O("output.txt", 2); что означает второй...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,663
Записей в блоге: 17
05.04.2012, 07:06 #2
C++
1
2
3
4
5
6
7
8
9
class Tr {
public:
Tr(){}
~Tr(){}
 
private:
char* one;
char* two;
}
Тут нет данных одни указатели, это нельзя сохранить(по крайней мере не имеет смысла)
Подозреваю класс составлен неправильно.
1
Саймон
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 8
05.04.2012, 12:04  [ТС] #3
Это я для примера просто привел )
0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,663
Записей в блоге: 17
05.04.2012, 16:07 #4
C++
1
utn.seekp(sizeof(Tr)*n, std::ios::beg);
где n- номер записи(начиная с нуля) от начала файла
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2012, 16:07
Привет! Вот еще темы с ответами:

Неправильно выполнение ifstream, ofstream - C++
Не происходит ни открытие файла, ни выполнение операций ввода-вывода ...

Функции ifstream , ofstream. Исправить - C++
Помогите исправить код пжлст, не работает прога( #include "stdafx.h" #include <iostream> #include <conio.h> #include <stdio.h> ...

Работа с кириллицей в ofstream/ifstream - C++
Как сохранять русские буквы в ofstream и выводить русские буквы в через ifstream ?

Работа с потоками ofstream/ifstream - C++
Добрый вечер! Помогите, пожалуйста, с задачей! Дан класс: class data { char str; //дата представлена в виде строки “mm/dd/yy” ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.04.2012, 16:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru