私の C++ プログラムに問題があります... 私のプログラム全体は、学生の名前、成績、年齢のデータベースであり、ユーザーが 1 人の学生のデータを削除したい場合、機能に問題があります。コードは次のとおりです。
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;
}
}
それは機能しますが、問題は、学生データを入力し、この関数を介して削除したいときに削除されないことです。最初にプログラムを閉じてからプログラムを再度開いてから、その関数を呼び出して学生を削除する必要がありますデータ。
最初にプログラムを閉じなくても、入力後すぐに生徒のデータを削除できるように変更するにはどうすればよいですか?