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; }}
它有效,但问题是我输入学生数据,当我想通过这个功能删除它时它不会删除它,我首先必须关闭程序,然后重新打开程序,然后调用该功能,以便删除学生数据.
如何更改它以便我可以在输入后立即删除学生数据,而无需先关闭程序?
解决方法 像这样.它的eaiser显示代码而不是解释.#include <string>#include <vector>#include <fstream>#include <iostream>using namespace std;voID displaystudentdata(){ string name,x=0; // x - "counter" to check if user entered wrong name system("cls"); ifstream students("students.txt"); cout<<"-------------------------------------------------------------------\n\n"; while(students >> name >> grade >> age) { cout<<"name= "<<name <<",Grade= "<< grade <<",Age= " <<age<<"\n"; } students.clear(); // clear eof and fail bits students.seekg(0,ios::beg); students.close();}voID deletestudentdata(){ string name,x=0; // x - "counter" to check if user entered wrong name ifstream students("students.txt"); ofstream temp("temp.txt"); // temp file for input of every student except the one user wants to delete cout<<"-------------------------------------------------------------------\n\n"; 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,print message that students data has been deleted cout << "Student data has been deleted." << endl; }}int main(voID){ displaystudentdata(); deletestudentdata(); displaystudentdata(); cout << "Student data has been deleted. \n\n" << endl; cout<<" \nPress any key to continue\n"; cin.ignore(); cin.get(); return 0;}总结
以上是内存溢出为你收集整理的C删除文件中的文本行全部内容,希望文章能够帮你解决C删除文件中的文本行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)