问题描述
当我编辑该值时,它不会替换记事本中的原始值。 c++ - 如何在不显示旧数据的情况下更新c ++文件中的数据?我想删除特定数据并更新。
str_ID = to_string(ID);
cout<<"\tEnter ID to edit: ";
cin>>value;
if(value == str_ID){
cout<<"\tThe Member is available"<<endl;
ifstream myfile2;//File to read from
myfile2.open("editfile.txt");
ofstream temp; //Temporary file
temp.open("temp.txt");
while (getline(myfile2,line))
{
if (line != str_ID)
temp << line << endl;
}
while (getline(myfile2,line)){
line.replace(line.find(str_ID),str_ID.length(),"");
temp<<line<<endl;
}
myfile2.close();
temp.close();
remove("editfile.txt");
rename("temp.txt","editfile.txt");
cout<<"\tEnter name :";
cin>>name;
cout << "\tENTER IC : ";
cin>> IC;
cout << "\tENTER AGE : ";
cin>> age;
cout << "\tENTER GENDER (F / M): ";
cin>> gender;
ofstream myfile;
myfile.open("editfile.txt",ios::app | ios::out);
myfile<<ID;
myfile<<"\t"<<name;
myfile<<"\t"<<IC;
myfile<<"\t"<<gender<<endl;
}
解决方法
如果在外部更改,请在记事本中重新加载文件!
,我根据您的代码编写了一个测试程序。希望能帮到你。
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string value;
string str_ID = "123"; //. assume to_string(ID)
cout << "\tEnter ID to edit: ";
cin >> value;
if (value == str_ID)
{
ifstream myfile2("editfile.txt");
ofstream temp("temp.txt");
string name,IC,age,gender;
cout << "\tEnter name: ";
cin >> name;
cout << "\tEnter IC: ";
cin >> IC;
cout << "\tEnter Age: ";
cin >> age;
cout << "\tEnter GENDER (F / M): ";
cin >> gender;
string line;
while (getline(myfile2,line))
{
if (line.find(str_ID) != string::npos)
//. or like this: if (line.substr(0,str_ID.length()) == str_ID)
{
temp << str_ID << "\t" << name << "\t" << IC << "\t" << gender << endl;
}
else
{
temp << line << endl;
}
}
myfile2.close();
temp.close();
remove("editfile.txt");
rename("temp.txt","editfile.txt");
}
return 0;
}