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

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

Войти
Регистрация
Восстановить пароль
 
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
#1

чтение файла - C++

20.12.2013, 03:38. Просмотров 153. Ответов 0
Метки нет (Все метки)

Есть клас , в котором хранятмся объекты типа факултеты , ректор , они вложены в класс Университета , задача состоит в том что бы без использования циклов написать функции для записи в файл и для ситыввания для записи я сделал , а вот считать как то не получается , в чём прикол вроде как делаю все правильно
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Описание факультета 
#include<iostream>
#include<string>
using namespace std;
struct Faculty{
public:
    string BusinessProfile;
    string name;
    short number_students;
    Faculty(){
    name = "financial";
    BusinessProfile = "economy";
    number_students   = 90;
    }
    Faculty(Faculty &Fac){
        name = Fac.name;
        BusinessProfile = Fac.BusinessProfile;
        short number_students  = Fac.number_students;
    }
    Faculty(string BussinesProfile,string name,short number_students ){
    setName(name);
    number_students  = number_students  ;
    setBusinessProfile(BussinesProfile);
    }
    ~Faculty(){
        if(name.empty()==false){name.clear();}
        if(BusinessProfile.empty()==false){BusinessProfile.clear();}
    }
    const  Faculty &operator=(const Faculty &fac){
        if(&fac != this){number_students = fac.number_students;
        name = fac.name;
        BusinessProfile = fac.BusinessProfile ;}
        return *this;
    }
    void setName(string str){
          if(str.empty()==false){name = str;}
    }
    void setBusinessProfile(string BussinessProfile){
        if(BussinessProfile.empty()==false) { BusinessProfile =  BussinessProfile;}
    }
    void clear()
    {
        name = "NULL";
        BusinessProfile = "NULL";
        number_students = 0;
    }
    void Create_Faculty(string name,string BusinessProfile,short number_students_2)
    {
        setName(name);
        setBusinessProfile(BusinessProfile);
        number_students  = number_students_2;
    }   
    short get_number_students_faculty(string name_2)
    {
        if(name==name_2) { return number_students; }
    }
    friend const  ostream &operator<<(ostream &output,const Faculty &fac){
        output<<fac.BusinessProfile<<" ";
        output<<fac.name<<" ";
        output<<fac.number_students<<" ";
    return output;
    }
    friend  istream &operator>>(istream &output, Faculty &fac){
        output>>fac.BusinessProfile;
        output>>fac.name;
        output>>fac.number_students;
    return output;
    }
    
};
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 Ректора 
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
struct Rector{
public:
    class RectorException{
      RectorException(){ cout<<" I'm sorry but the operation failed "<<endl; }
    };
    string Name;
    string surName;
    string academicDegree;
    Rector(){
    Name = "James";
    selectTheDegree('1');
    surName = "Simons";
    }
    Rector(string name,string surname){
    char ch;
        cout<<"Please enter ch : 1 for set academic degree 2 for select  degree "<<endl;
        cin>>ch;switch(ch){
        case '1':getacademicDegree(academicDegree); break;
        case '2': cout<<"enter 1 or 2 or 3 ";cin>>ch;selectTheDegree(ch); break;};
    setName(name);
    setSurName(surname);
    }
    ~Rector(){
        if(Name.empty()==false) {Name.clear();}
        if (surName.empty()==false){surName.clear();}
        if(academicDegree.empty()==false){academicDegree.clear();}
    }
    //метод получение информации о ректоре 
     void get_information()
     {
         cout<<setprecision(5)<<academicDegree<<setprecision(4)<<Name<<setprecision(4)<<surName<<endl;
     }  
    // метод получения академическогоо звания 
    void getacademicDegree(string str){
     cout<<"Please select a degree "<<endl;
    if(str.empty()==true){char ch; cout<<"Please enter : 1 for PhD 2 ";cin>>ch; selectTheDegree(ch);}
     else {academicDegree = str;} 
    }
    const Rector &operator=(const Rector&rec)
    { if(this !=&rec){
        Name = rec.Name;
        surName = rec.surName;
        academicDegree = rec.academicDegree;}
        return *this;
    }
    //установка значения имени 
    void setName(string name)
    {
        try{if(name.empty()==false ){Name = name;}}catch (Rector::RectorException){cout<<" sorry "<<endl;};
    }
    //установка значений фамилии 
    void setSurName(string surname){
        try{    if(surname.empty()==false) { surName = surname;}} catch (Rector::RectorException){cout<<" sorry "<<endl;};
    }
    //Выбор значения учёной степени 
    void selectTheDegree(char ch){
        try{
            switch(ch){
         case '1':
            academicDegree="PhD";
            break;
        case '2':
            academicDegree="MBA";
            break;
        case '3':
            academicDegree="MAE";
            break;
 
           }
        }
        catch(Rector::RectorException){
          
        }
    }
    friend const ostream& operator<<(ostream &output,const Rector &rector){
        output<<rector.Name<<" ";
        output<<rector.academicDegree<<" ";
        output<<rector.surName<<" ";
        output<<endl;
        return output;
    }
    friend  istream& operator>>(istream &output,Rector &rector){
        output>>rector.Name;
        output>>rector.academicDegree;
        output>>rector.surName;
        return output;
    }
};
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
унивыерситета 
#include<iostream>
#include<cstring>
#include"Rector.h"
#include"Faculty.h"
using namespace std;
class University{
public: 
    string block;
    string street;
    Rector rec;
    Faculty faculty[5];
    string University_name;
    class UniversityEexception{
        UniversityEexception(){cout<<"I'm sorry but the operation failed"<<endl;}
    };
 University();
 University(const University &un);
 University(string name,string street,Rector rec);
 ~University(); 
 void University::getName_adress();
 short avarage_number_students()
 {
     short returnValue=0;
     for(short i(0);i<5;++i)
     {
         returnValue +=faculty[i].number_students;
     }
     return returnValue/5;
 };
 void avarage_number_students_bussiness_profile(string Bussiness_profile)
 {
     short returnValue=0;
    for(short i(0);i<5;++i)
    {
        if(faculty[i].BusinessProfile==Bussiness_profile){ returnValue +=faculty[i].number_students; }
    }
    cout<< returnValue;
 }
 const University &operator=(const University &UN);
 //Перегрузка оператора вода 
 friend istream& operator>>(istream &output,University &univer);
 friend const  ostream &operator<<(ostream &,const University &univer);
};
#include"University.h"
#include<cstring>
using namespace std;
const University &University::operator=(const University &UN)
{
    if(this !=&UN){
      block = UN.block;
      street = UN.street;
      rec = UN .rec;
      for(short i = 0;i<5;++i){
       faculty[i] = UN.faculty[i];
     }
University_name=UN.University_name;}
 return *this;
};
University::University()
{
    University_name = "Harvard";
    block = "a";
    street = "wall street";
    rec;
    for(short i=0;i<5;++i)
    {
        faculty[i];
    }
};
University::University(string name,string street,Rector rec)
{
    string BussinesProfile;
    string name_faculty;
    short number_students;
    University_name = name ;
    street = street;
    rec = rec;
    for(short i(0);i<5;++i)
    {
        cout<<"BussinesProfile"<<endl;
        getline(cin,BussinesProfile);
        cout<<"name"<<endl;
        getline(cin,name_faculty);
        cout<<"number_students"<<endl;
        cin>>number_students;
        faculty[i].setBusinessProfile(BussinesProfile);
        faculty[i].setName(name_faculty);
        faculty[i].number_students=number_students;
    }
};
University::University(const University &UN){
    block = UN.block;
    for(short i(0);i<5;++i){faculty[i] = UN.faculty[i];}
    street = UN.street;
    University_name = UN.University_name;
};
University::~University()
{
    if(block.empty()==false){block.clear();}
    if(street.empty()==false){street.clear();}
    if(University_name.empty()==false){University_name.clear();}
}
void University::getName_adress(){
cout<<University_name<<street<<block<<endl;
};
istream& operator>>(istream &output,University &univer){
    output>>univer.rec;
    output>>univer.block;
    output>>univer.University_name;
    output>>univer.street;
    for(short i = 0;i<5;++i)
    {
        output>>univer.faculty[i];
    }
    return output;
};
const ostream& operator<<(ostream &ost,const University &univer){
    ost<<univer.rec;
    ost<<univer.block<<" ";
    ost<<univer.University_name<<" ";
    ost<<univer.street<<" ";
    for(short i = 0;i<5;++i)
    {
        ost<<univer.faculty[i];
    }
    ost<<endl;
    return ost;
};
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
main
#include"University.h"
#include<iostream>
#include<vector>
#include<iterator>
#include<cstdio>
#include<algorithm>
#include<fstream>
#include<cstring>
using namespace std;
//Функция для сортировки 
/*
bool to_sort_university(University &univer,University &univer_2)
{
        return univer.University_name>univer_2.University_name;
}*/
//Метод записи в файл 
void to_file(vector<University> &vec,ofstream &file)
{
    if(!vec.empty() || file.is_open()){
        ostream_iterator<University> iter_2(file," "); copy(vec.begin(),vec.end(),iter_2);file.close();
    }
    else {cerr<<"error"<<endl;}
}
//метод чтения из файла 
void to_vec(vector<University> &vec,ifstream &file)
{
    if(file.is_open()){
      if(vec.empty()){
      copy(istream_iterator<University>(file), istream_iterator<University>(),back_inserter(vec));
      }
      else
      {
        vec.clear();
       copy(istream_iterator<University>(file), istream_iterator<University>(),back_inserter(vec));  
      }
    }
  else 
  {
    cerr<<"  File not found"<<endl;
  }
};
int main()
{
    vector<University> un(3);
    //un.erase(un.begin());
    ofstream  file;
    ifstream file_2;
    file.open("test.txt");
    //итератор для вывода в поток , выводит все в поток благодаря перегруженноц операции << 
    //вывод в поток
    to_file(un,file);
    ostream_iterator<University> iter(cout," ");
    copy(un.begin(),un.end(),iter);
    file.close();
    file_2.open("Input.txt"); 
    copy(istream_iterator<University>(file_2),istream_iterator<University>(),back_inserter(un)); 
    //Сортировка по названию университета 
    //sort(un.begin(),un.end(),to_sort_university);
    cout<<endl<<endl<<endl;
    cout<<un.size();
    cout<<endl;
    copy(un.begin(),un.end(),iter);
    cout<<endl;
    cout<<un.size();
    file_2.close();
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 03:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос чтение файла (C++):

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

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

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - 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 структур и одной переменной. Подробное описание формата во вложении, просьба посмотреть его. У меня возникла...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение файла с несколькими знаками конца файла - C++
В файле несколько раз встречается ноль, и ни как не получается прочитать его полностью. Как можно решить данную проблему ?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2013, 03:38
Привет! Вот еще темы с ответами:

чтение из файла - C++
Входной файл имеет такой вид 13 aaabaaabcckks 5 aabcc Как его прочитать, используя эти 13 и 5 (длину строки)? Помогите,...

Чтение из файла - C++
Всем привет! чёт я не могу разобраться! есть файл 1.txt с содержимым: 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 ...

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

Чтение из файла - C++
Люди, помогите, пжлст, новичку! Задача следующая есть файл abc.txt с наdписью abc10.12. Нужно сымитировать нажатие клавиш для цифр и точек...


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

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

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