Перегрузка >>, << при считывании из текстового файла
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Задание: Реализуйте возможность хранения в связном списке сотрудников из файла list.txt. Для этого:
— создайте класс employee, полями данных которого будут данные о сотрудниках,
хранящиеся в файле list.txt, а именно: идентификационный номер, имя, фамилию и оклад;
— напишите дружественную классу employee функцию, которая будет перегружать
операцию извлечения данных из потока (>>) для объектов данного класса;
— напишите дружественную классу employee функцию, которая будет перегружать
операцию вставки данных в поток (<<) для объектов данного класса ;
В функции main():
— с помощью шаблона класса linklist создайте связный список для хранения объектов класса
employee;
— считайте данные о сотрудниках из файла list.txt;
— запишите считанные из файла данные в связный список;
— выведите весь список на экран.
Ошибку выдает в main — file >> current;
кто может помочь с выполнением и объяснением?
include <iostream>
include <conio.h>
include <windows.h>
include <iomanip>
include <fstream>
include <string>
using namespace std;
void read_f(string);
fstream list;
template<class Type>
struct link {
Type data;
link next;
};
template <class Type>
class linklist {
private:
link<Type> first;
public:
linklist()
{
first = NULL;
}
void additem(Type d);
void display();
};
class employers {
private:
int id;
string fname;
string iname;
float salary;
public:
employers() : id(0), fname(«fname»), iname(«iname»), salary(0.0)
{}
friend ostream& operator << (ostream&, const employers&);
friend std::istream& operator >> (istream&, employers&);
};
ostream& operator <<(ostream& os, const employers& e)
{
os << e.id <<« »<< e.fname << « » << e.iname << « » << e.salary<< endl;
return os;
}
istream& operator >> (istream& is, employers& e)
{
is >> e.id >> e.fname >> e.iname >> e.salary;
return is;
}
template<class Type>
void linklist<Type>::additem(Type d) {
link<Type>* newLink = new link<Type>;
newLink->data = d;
newLink->next = first;
first = newLink;
}
template<class Type>
void linklist<Type>::display() {
link<Type>* current = first;
while (current) {
cout << current->data << endl;
current = current->next;
}
}
int main() {
system(«chcp 1251 > nul»);
string file = «C:/Users/Bqerm/OneDrive/Рабочий стол/7 семестр/7 семестр/7 семестр/20/list.txt»;
linklist<int> list;
for (int i = 0; i < 6;i++) {
int current;
file >> current; (ЗДЕСЬ ПОДЧЕРКИВАЕТ ОШИБКУ >>)
list.additem(current);
}
list.display();
_getche();
}
Подскажите зачем << второй раз вставляем в командную строку
cout << «Hello, world!» << endl;