C++ suppression de la ligne de texte dans un fichier

J'ai un problème avec mon programme en c++... tout Mon programme est une base de données pour les étudiants, les noms, les grades et les âges, et j'ai un problème avec la fonction lorsque l'utilisateur veut supprimer les données pour 1 étudiant. Voici le code:

void deletestudentdata()
{
    string name, grade, tname;
    int age, x=0; //x - "counter" to check if user entered wrong name

    system("cls");
    cout << "Enter name of the student you want to erase from database" << endl;
    cin >> tname;

    ifstream students("students.txt");
    ofstream temp("temp.txt"); //temp file for input of every student except the one user wants to delete

    while(students >> name >> grade >> age)
    {
        if(tname!=name){ //if there are students with different name, input their data into temp file
            temp << name << ' ' << grade << ' ' << age << endl;
        }
        if(tname==name){ //if user entered correct name, x=1 for later output message that the user data has been deleted
            x=1;
        }
    }
    students.clear(); //clear eof and fail bits
    students.seekg(0, ios::beg);
    students.close();
    temp.close();
    remove("students.txt"); 
    rename("temp.txt","students.txt");
    if(x==0){ //x was set to 0 at start, so if it didn't change, it means user entered the wrong name
        cout << "There is no student with name you entered." << endl;
    }
    else{ //x is not 0, it means user entered the correct name, print message that students data has been deleted
        cout << "Student data has been deleted." << endl;
    }
}

Il fonctionne, mais le problème est que j'ai entrer les données sur les étudiants et lorsque je veux le supprimer via cette fonction, il ne le supprime pas, je dois d'abord, fermez le programme et ouvrez de nouveau le programme et ensuite appeler cette fonction de sorte qu'il supprime les étudiants de données.

Comment puis-je modifier pour que je puisse supprimer les étudiants de données à droite après l'entrée, sans avoir à fermer le programme de première?

Pouvez-vous être plus précis de la façon de l'exécuter, par exemple: "I enter student data", comment?
J'ai couru dans VS2012. Ne vois pas de problème.
Je suppose que vous stocker la liste des noms des étudiants ailleurs lors de l'exécution de votre programme, et pas seulement dans le fichier, et vous devez supprimer l'étudiant à partir de là aussi. (Ou effacer la liste et la remplir à nouveau comme vous copiez les noms.)
Pouvez-vous nous montrer le code pour vérifier que l'élève a en effet supprimé?

OriginalL'auteur user2279578 | 2013-04-14