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

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

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

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

10.02.2013, 19:01. Просмотров 336. Ответов 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++
C++ Копирование содержимого одного файла в другой посредством командной строки
C++ Вызов из разных потоков функции чтения из файла, dll
C++ Чтение файла
C++ Чтение файла
Обмен содержимым файлов посредством дополнительного файла C++
C++ Чтение из файла
C++ Передать из одного файла в другой текст построчно посредством read() write()
Реализовать программу в виде исполняемого файла, запускаемого посредством аргументов командной строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 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 минут
тема актуальна
Yandex
Объявления
11.02.2013, 00:02     Чтение из файла посредством потоков
Ответ Создать тему
Опции темы

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