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

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

Войти
Регистрация
Восстановить пароль
 
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 106
Завершенные тесты: 2
#1

Чтение из файла посредством потоков - C++

10.02.2013, 19:01. Просмотров 344. Ответов 2
Метки нет (Все метки)

Добрый день!
Такая проблемка:
Реализована иерархия из трёх классов. Так же реализована шаблонная функция записи в файл и чтение из файла.
Проблема в функции чтения из файла в объект класса.
1. Не могу понять как правильно реализовать алгоритм. Точней алгоритм вроде как построил(сомневаюсь в его эффективности и правильности).
2. В алгоритме реализован оператор ввода(>>). Как следует его правильно реализовать что бы этот оператор работал для всех 3-х классов?
Прочитал пару сайтов по этому поводу - вроде как то можно реализовать через метод read объекта класса ifstream.
Что то вроде этого
C++
1
2
ifstream f("first.txt")
f.read((Type) a,sizeof a)//??
В общем я хочу что бы оператор >> писал из файла в любой из трёх возможных классов.
Вот выкладываю функцию записи в файл экземпляров класса и функцию считывания из файла в экземпляры класса. А так же перегрузку оператора <<.
Помогите с методом считывания. За ранее благодарен.
C++
1
2
3
4
5
6
7
template <class Type> void write_f (Type& a)
{//шаблонная функция записи в файл - работает нормально
    ofstream MyCoolFile;
MyCoolFile.open("First.txt");
MyCoolFile<<a;
MyCoolFile.close();
}

C++
1
2
3
4
5
6
7
8
9
10
11
template <class Type> void read_f (Type& a)
 
{//шаблонная функция считывания из файла
       
       ifstream f("first.txt",ios::in);
     
    f>>a;  //как правильно перегрузить оператор >>????
       f.close();
       cout << "\nЧтение из файла закончено.";
     
}

//перегрузка оператора <<
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ostream& operator <<(ostream &out,schooll& m)//реализация опретора вывода в поток(сдвиг влево)
{
    
    schooll* t;
    t=&m;
    out<<t->get_surname()<<endl;
    out<<t->get_name()<<endl;
    out<<t->get_patr()<<endl;
    out<<t->get_data_day()<<":";
    out<<t->get_data_maonh()<<":";
    out<<t->get_data_year()<<endl;
    out<<t->get_adr()<<endl;
    out<<t->get_tell()<<endl;
    out<<t->get_icq()<<endl;
 
 
    return out;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из файла посредством потоков (C++):

Чтение символьного массива посредством указателя - C++
Доброго времени суток, подскажите способы чтения символьных строк с помощью указателя. Вот мой вариант (подскажите бред или нет) ...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Обмен содержимым файлов посредством дополнительного файла - C++
Здравствуйте. Прошу помощи, потому что нету идей совсем Даны файлы F1, F2, F3, F4, F5, компоненты которых являются вещественными...

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

Копирование содержимого одного файла в другой посредством командной строки - C++
Здравствуйте, Передо мной встала задача написать программу, которая работала бы через командную строку, а именно которой можно было бы...

Передать из одного файла в другой текст построчно посредством read() write() - C++
# include &lt;iostream&gt; # include &lt;vector&gt; # include &lt;fstream&gt; # include &lt;string&gt; using namespace std; int main () { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.02.2013, 19:25 #2
Цитата Сообщение от Olejan_one Посмотреть сообщение
Как следует его правильно реализовать что бы этот оператор работал для всех 3-х классов?
как эти 3 класса между собой связаны? что у них общего?
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 106
Завершенные тесты: 2
11.02.2013, 00:02  [ТС] #3
они наследуются друг от друга.

Добавлено через 30 минут
Цитата Сообщение от Jupiter Посмотреть сообщение
как эти 3 класса между собой связаны? что у них общего?
Может просто необходимо реализовать перегрузку для каждого класса?

Добавлено через 1 час 12 минут
тема актуальна.

Добавлено через 2 часа 47 минут
тема актуальна
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2013, 00:02
Привет! Вот еще темы с ответами:

Реализовать программу в виде исполняемого файла, запускаемого посредством аргументов командной строки - C++
не могу понять что это означает и как это реализовать: Работа должна быть выполнена в виде 1 исполняемого файла, принимающего...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

Чтение нескольких структур и одной переменной из бинарного файла. Формат файла имеется - C++
Формат файла состоит из 3 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

Вызов из разных потоков функции чтения из файла, dll - C++
Доброго времени суток. Помогите пожалуйста написать программу, вот задание: Вызов из разных потоков функции чтения из файла. Функция...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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