Vecteur de structures: l'ajout d'éléments de C++

Je suis à la lecture de mon les structures à partir d'un fichier, et je voudrais ajouter à vecteur de structures.
Voici à quoi il ressemble et fonctionne:

    typedef struct
{
    int ID;
    string name;
    string surname;
    int points;
}
Student;

int main()
{
    ifstream theFile("test.txt");
    std::vector<Student*> students;

    Student* s = new Student();

    while(theFile >> s->ID >> s->name >> s->surname >> s->points)
    {
        studenti.push_back(s); //here I would like to add this struct s from a file
    }

//here I want to print each struct's values on the screen, but the output is always ONLY last struct N times, and not all of them, each only once


    std::vector<Student*>::const_iterator it;
    for(it = students.begin(); it != students.end(); it+=1)
    {
        std::cout << (*it)->ID <<" " << (*it)->name << " " << (*it)->surname <<" " << (*it)->points <<endl;
    }

Que dois-je faire si je peux ajouter mon structs à un vecteur, et de les imprimer normalement (cette impression n'est qu'une case vraiment, si les structures sont correctement chargé dans le vecteur)?

Pourquoi, oh pourquoi le typedef?
Et quel est le format de fichier? Est-ce que chaque nom de l'élève consiste justement à deux mots?
Notez que vous n'avez pas un vecteur de structs, vous avez un vecteur de pointeurs. Tous de qui pointent vers le même objet...

OriginalL'auteur Whizzil | 2013-04-06