diff --git a/ruter.cpp b/ruter.cpp index 08a23bcd9f8b0189a3f1041cf89a7e15f38f1e7e..2c15f8738fb34c9ff113216c883d4714f021a405 100644 --- a/ruter.cpp +++ b/ruter.cpp @@ -5,9 +5,11 @@ using namespace std; extern Stoppesteder* gStoppesteder; Ruter::Ruter() { + lesFraFil(); } Ruter::~Ruter() { + skrivTilFil(); } void Ruter::ny(const int& nr) { @@ -21,6 +23,7 @@ void Ruter::ny(const int& nr) { break; case 1: { Buss* buss = new Buss; + buss->lesData(); if (buss->ny(-1, -1) != nullptr) alleRuter.insert(pair<int, Rute*>(nr, buss)); break; @@ -183,4 +186,44 @@ int Ruter::lesRute() { int ruteNr; ruteNr = lesInt("Skriv inn rute nummer", MIN_RUTER, MAX_RUTER); return ruteNr; +} + +void Ruter::lesFraFil() { + int antallRuter, i; + antallRuter = i = 0; + string type = ""; + vector<string> typeSplittet; + ifstream fil(STI_RUTER); + if (fil) { + fil >> antallRuter; + fil.ignore(); + while (!fil.eof() && i < antallRuter) { + getline(fil, type); + typeSplittet = hjelp.splittStreng('*', type); + if(typeSplittet[1] == "Buss") { + Buss* buss = new Buss; + buss->lesFraFil(fil); + alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), buss)); + } + else if (typeSplittet[1] == "Bane") { + Bane * bane = new Bane; + bane->lesFraFil(fil); + alleRuter.insert(pair<int, Rute*>(stoi(typeSplittet.front()), bane)); + } + i++; + } + fil.close(); + } else + cout << "\nError: " << STI_RUTER << " ble ikke funnet!" + << '\n'; +} + +void Ruter::skrivTilFil() { + ofstream fil(STI_RUTER); + fil << alleRuter.size() << '\n'; + for (const auto & val : alleRuter) { + fil << val.first << '*'; + val.second->skrivTilFil(fil); + fil << "X" << '\n'; + } } \ No newline at end of file diff --git a/ruter.h b/ruter.h index 66271c21566388915701ab704a311c80dceeb54d..181e4a5d2f8d7189015e54aee61585a94b5976ed 100644 --- a/ruter.h +++ b/ruter.h @@ -2,6 +2,7 @@ #define __RUTER_H #include <algorithm> +#include <fstream> #include <iostream> #include <map> #include <string> @@ -10,10 +11,11 @@ #include "buss.h" #include "lesData3.h" #include "rute.h" +#include "hjelpeFunksjoner.h" class Ruter { //: public Rute private: - // Rute rute; + HjelpeFunksjoner hjelp; public: std::map<int, Rute*> alleRuter; @@ -29,6 +31,8 @@ class Ruter { //: public Rute void spesifikkRuteData(const int& ruteNr); void endre(); int lesRute(); + void lesFraFil(); + void skrivTilFil(); }; #endif //__RUTER_H \ No newline at end of file