Как интегрировать вектор списков? - PullRequest
0 голосов
/ 25 апреля 2019

Как я могу должным образом преобразовать и обработать вектор списков? Мой вектор vector<Civilizacion> arreglo, а мой список list<Aldeano> aldeanos. Они объявлены на разных классах. Функцией ofstream, которую я использую, является следующая:

void VideoGame::respaldar(vector<Civilizacion> &civilizaciones)
{
    ofstream archivo("civilizaciones.txt", ios::out);

    for(size_t i(0);i<civilizaciones.size();i++){
        Civilizacion &c = civilizaciones[i];
        archivo << c.getName() << endl;
        c.respaldar();
}
    archivo.close();
}

Вызывает c.respaldar(), который является списком функции потока:

void Civilizacion::respaldar()
{
    ofstream aldeanoss(getName() + ".txt", ios::out);


    for(auto it = aldeanos.begin(); it!=aldeanos.end(); it++){
        Aldeano &aldeano = *it;
        aldeanoss<<aldeano.getNombre()<<endl;
        aldeanoss<<aldeano.getEdad()<<endl;
        aldeanoss<<aldeano.getGenero()<<endl;
        aldeanoss<<aldeano.getSalud()<<endl;
    }
    aldeanoss.close();
}

Это создает .txt архив с названием, которое я ввел в void Videogame::respaldar(...), и с информацией void Civilizacion::respaldar(). Но когда я пытаюсь использовать ifstream для восстановления информации, ничего не происходит, это те функции, которые я пытаюсь использовать. Для вектора:

void VideoGame::recuperar()
{
    ifstream archivo("civilizaciones.txt");
if(archivo.is_open()){
    while(!archivo.eof()){
        string linea;
        getline(archivo,linea);

        if(archivo.eof()){
            break;
        }
        c.setName(linea);
    }
    c.recuperarAld();
    }
}

И c.recuperarAld() вызывает список функций ifstream:

void Civilizacion::recuperarAld()
{
    ifstream aldeanoss(getName() + ".txt");
if(aldeanoss.is_open()){
    while(!aldeanoss.eof()){
        string linea;
        Aldeano a;
        getline(aldeanoss, linea);

        if(aldeanoss.eof()){
            break;
        }
        a.setNombre(linea);

        getline(aldeanoss, linea);
        a.setEdad(stoul(linea));

        getline(aldeanoss, linea);
        a.setGenero(linea);

        getline(aldeanoss, linea);
        a.setSalud(stoi(linea));
        }
    }
}

Но это не работает, как я могу это исправить?

...