Как я могу должным образом преобразовать и обработать вектор списков?
Мой вектор 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));
}
}
}
Но это не работает, как я могу это исправить?