Buenos dias,
En un proyecto de la universidad donde se debe imprimir una lista con todas las asignaturas almacenadas en un fichero, el programa solo me imprime la primera y no sigue imprimiendo el resto. No sé a que es debido. Os pongo el codigo::
Codigo desde donde se llama a la función de imprimir
/**
*Imprimirá el listado de todas las asignaturas
*/
void imprimirAsignaturas(){
vector <Asignatura> asignaturas = persistencia.getAsignaturas();
for (int i=0;i<asignaturas.size();i++)
{
asignaturas.print();
}
}
Codigo de persistencia.GetAsignaturas
/**
* Obtiene todos las asignaturas almacenados en la base de datos.
* Si no encuentra asignaturas devuelve una lista vacia.
*/
vector<Asignatura> Persistencia::getAsignaturas() {
string linea;
ifstream infile;
// Abrir y recorrer el fichero para obtener los datos
infile.open("asignaturas");
vector<Asignatura> asignaturas;
int i = 0;
while (!infile.eof()) {
Asignatura asignatura;
getline(infile, linea);
if (linea.length() > 0) {
vector<string> atributos;
atributos = split(linea, "###");
int referencia;
referencia = atoi(atributos[0].c_str());
asignatura.setReferencia(referencia);
asignatura.setNombre(atributos[1].c_str());
int aforo;
aforo = atoi(atributos[2].c_str());
asignatura.setAforo(aforo);
int AlumnosMatriculados;
AlumnosMatriculados = atoi(atributos[3].c_str());
asignatura.setAlumnosMatriculados(AlumnosMatriculados);
int curso;
curso = atoi(atributos[4].c_str());
asignatura.setCurso(curso);
int creditos;
creditos = atoi(atributos[5].c_str());
asignatura.setCreditos(creditos);
// Se inserta cada uno de los ejemplares en la lista.
asignaturas.push_back(asignatura);
}
i++;
infile.close();
return asignaturas;
}
}
Gracias por la ayuda, espero su respuesta
Un saludo