Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
-23 / 0 / 1
Регистрация: 22.11.2015
Сообщений: 60
1

Перегрузка операторов потокового ввода вывода

01.12.2016, 10:52. Показов 510. Ответов 7
Метки нет (Все метки)

Есть класс "деканат", полем которого есть список студентов, объектов из класса "Студент". Как переопределяя операторы ">>" ""<<" вывести список студентов?

код из Деканат.cpp
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
ostream &operator <<(ostream &stream, Dekanat& obj)
{
    stream << "Name of dekan: " << obj.getName1() << endl;
    stream << "Tel: " << obj.getTel() << endl;
    stream << "Room: " << obj.getRoom() << endl;
    stream << "Number of student:" << Dekanat::n_student<< endl;
    stream << "List of student:" << "\n";
    for(int i=0;i<obj.listStud.size();i++)
     cout<<obj.listStud[i]<< endl;
    return stream;
};
//***************переозначення оператора потоку введення
istream &operator >> (istream &stream, Dekanat &obj)
{
    string n;
    string t;
    int r;
    cout << "Enter name of dekan: " << endl;
    stream  >>n;
    obj.setName1(n);
    cout << "Enter tel: " << endl;
    stream >>t;
    obj.setTel(t);
    cout << "Enter room: " << endl;
    stream>>r;
    obj.setRoom(r);
    cout << "Enter number of student(<=5):" << endl;
    stream >> Dekanat::n_student;
    cout << "Enter list of student:" << endl;
    
    for (int i = 0; i< Dekanat::n_student; i++)
    //stream >>;
    return stream;
}
 
Student.cpp
ostream &operator <<(ostream &stream, Student& obj)
{
    stream << "Name of Student: " << obj.getName()<< endl;
    stream << "Zalikovka : " << obj.getZalikovka() << endl;
    stream << "Course: " << obj.getCourse() << endl;
    stream << "Form of edukation:" << obj.getFormOfEducation() << endl;
    stream << "Stypendia:" << obj.getStypendia() << endl;
    stream << "GPA:" << obj.getGPA() << endl;
    stream << "Group ID:" << Student::groupID<< endl;
        return stream;
};
istream &operator >> (istream &stream, Student &obj)
{
    string n;
    string z;
    int c;
    int f;
    int s;
    int gpa;
 
    cout << "Enter name of Student: ";
    stream >> n;
    obj.setName(n);
    cout << "Enter zalikovka : ";
    stream>>z;
    obj.setZalikovka(z);
    cout << "Enter course:";
    stream>>c;
    obj.setCourse(c);
    cout << "Form of edukation: ";
    stream>>f;
    obj.setFormOfEducation(f);
    cout << "Stypendia: ";
    stream>>s;
    obj.setStypedia(s);
    cout << "GPA:";
    stream >> gpa;
    obj.setGPA(gpa);
    cout << "Group ID:";
    Student::groupID;
    return stream;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2016, 10:52
Ответы с готовыми решениями:

Перегрузка операторов потокового ввода-вывода
Пожалуйста, ответе на такой вопрос: почему при написании класса, при перегрузке операторов...

Перегрузка потокового ввода/вывода
Вот сама перегрузка ostream&amp; operator&lt;&lt; (ostream&amp; out, Poli&amp; outstream) { out&lt;&lt;&quot;Степень...

Перегрузка потокового ввода-вывода
Доброго времени суток!!! Возникла такая проблема: необходимо сделать перегрузку операций &lt;&lt; и &gt;&gt;....

Перегрузка потокового ввода/вывода для класса с полем типа string
Возможно ли перегрузить &gt;&gt; и &lt;&lt; или придётся заменить переменную string на массив char? У меня...

7
7159 / 6134 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
01.12.2016, 11:07 2
Первый оператор не работает, что ли?
0
-23 / 0 / 1
Регистрация: 22.11.2015
Сообщений: 60
01.12.2016, 18:58  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
ostream &operator <<(ostream &stream, Dekanat& obj)
{
stream << "Name of dekan: " << obj.getName1() << endl;
stream << "Tel: " << obj.getTel() << endl;
stream << "Room: " << obj.getRoom() << endl;
stream << "Number of student:" << Dekanat::n_student<< endl;
stream << "List of student:" << "\n";
for(int i=0;i<obj.listStud.size();i++)
cout<<obj.listStud[i]<< endl;
return stream;
};
в этой строчке ошибка
C++
1
cout<<obj.listStud[i]<< endl;
0
7159 / 6134 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
01.12.2016, 19:13 4
Что за listStud()?
0
-23 / 0 / 1
Регистрация: 22.11.2015
Сообщений: 60
01.12.2016, 20:04  [ТС] 5
вектор студентов (объектов класса Студент)
0
7159 / 6134 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
01.12.2016, 20:09 6
Текст ошибки?
0
-23 / 0 / 1
Регистрация: 22.11.2015
Сообщений: 60
01.12.2016, 20:21  [ТС] 7
Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'Student' (or there is no acceptable conversion)
0
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
01.12.2016, 21:21 8

Не по теме:

Кликните здесь для просмотра всего текста
зачем такое городить?
структура
C
1
struct{};
Цитата Сообщение от alina--- Посмотреть сообщение
cout << "Enter name of Student: ";
stream >> n;
obj.setName(n);
cout << "Enter zalikovka : ";
stream>>z;
obj.setZalikovka(z);
cout << "Enter course:";
stream>>c;
obj.setCourse(c);
cout << "Form of edukation: ";
stream>>f;
obj.setFormOfEducation(f);
cout << "Stypendia: ";
stream>>s;
obj.setStypedia(s);
cout << "GPA:";
stream >> gpa;
obj.setGPA(gpa);
cout << "Group ID:";
Student::groupID;
return stream;
цикл короткий напрашивается
все сообщения убрать в заголовки.
Цитата Сообщение от alina--- Посмотреть сообщение
//***************переозначення оператора потоку введення
istream &operator >> (istream &stream, Dekanat &obj)
сильно...
Цитата Сообщение от alina--- Посмотреть сообщение
Как переопределяя операторы ">>" ""<<" вывести список студентов?
элементерно, только зачем переопределять? не пояснили?
C++
1
2
operator>>/*здесь переопределям*/
operator<<x;



Добавлено через 55 минут

Не по теме:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
cout << "\n Найдено cовпадений: " << S2.size();
        int j = 1;
        for (string s : S2) {
            cout << endl << j++ << ". " << s;
        };
вся прелесть С++ (для кого-то).
и подобный код может миллионов слов вывести.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
/*services and data*/
static const char **user_message = [" имя\n"," возраст:\n"," рост:\n"];
struct {
string 
firstName,
lastName, /*Address;*/
uint16 Age;
uint16 H;
};
create_student(){
student exempl;
for...
};
зачем учащимся дают такую лабуду - лучше бы научили подобное в SQL делать. у меня нервы не выдержали такую задачу - "часть класса". извините.
на С++ можно что-то делать, но не имитировать СУБД.




Добавлено через 2 минуты
Цитата Сообщение от alina--- Посмотреть сообщение
Error C2679 binary '<<': no operator found which takes a right-hand operand of type 'Student' (or there is no acceptable conversion)
вы в чем программируете? начнем с этого.
C++
1
std::operator>> /*вы так пробовали переопределять?*/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2016, 21:21

Перегрузка операторов ввода и вывода
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class ComplexNumber { private:...

Перегрузка операторов ввода-вывода
Доброго времени суток! Почему перестал работать &gt;&gt; оператор для стандартного типа char....

Перегрузка операторов ввода\вывода
Вот такой простенький пример описан во многих постах, есть в некоторых видео но у меня в...

Перегрузка операторов ввода вывода
ребята болит уже голова)) main.cpp #include &quot;myStr.h&quot; int main() { myStr myS(&quot;ok&quot;);...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru