Целью этого кода является чтение файла, содержащего название, доллары в миллиардах и страну, которые разделены вкладками. Мне нужно создать класс Billionaire и перегрузить операторы ostream и istream, чтобы удобно прочитать файл в вектор и записать содержимое в вывод. А затем создайте карту, которая отображает строку страны на пару. Пара содержит копию первого миллиардера каждой страны из списка и счетчик для подсчета количества миллиардеров в каждой стране. Однако я не могу перегрузить потоковые и потоковые операторы.
Я пытался перегрузить эти операторы в классе Billionaire, но я получаю ошибки.
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
#include <set>
#include <map>
#include <string>
#include <iterator>
#include <fstream>
#include <istream>
#include <ostream>
using namespace std;
class Billionaire{
//overload the ostream and istream operators to conveniently
//read the file into a vector and write the content to the output
public :
friend ostream &operator<<(ostream &stream, Billionaire o);
friend istream &operator>>(istream &stream, Billionaire &o);
};
int main(){
std::ifstream stream("Forbes2018.txt");
if(!stream){
cout << " WARNING : File not found !" << endl ;
}
vector <Billionaire> billionaires;
copy (istream_iterator<Billionaire>( stream ),
istream_iterator<Billionaire>() , back_inserter( billionaires ));
copy (billionaires.begin () , billionaires.end () ,
ostream_iterator < Billionaire >( cout , "\n"));
map < string , pair < const Billionaire , size_t >> m;
}
У меня 2 ошибки:: -1: ошибка: символы не найдены для архитектуры x86_64: -1: ошибка: команда компоновщика завершилась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)