我需要读取一个 .txt 文件,找到一个字符串来更改它,然后再次保存 .txt 文件。我希望这种改变是永久性的,这意味着如果我需要改变两个不同的东西,第一个改变应该保持不变。出于某种原因,当我运行代码进行新更改时,即使 .txt 文件实际更改了,前一个也会被还原,例如,如果我在 .txt 中有这个
数据A=2;数据B=0;
并运行代码将“Data A”更改为 5,如果我再次打开 .txt,它将显示:
数据A=5;数据B=0;
如果我再次运行它以将“Data B”更改为 3,如果我再次打开 .txt,它将显示:
数据A=2;数据B=3;
如果文件被保存,我无法理解。为什么 .txt 保存但“旧值”被重写?
// Extract text from file
FileReader file("config.txt");
char* text = (char*)malloc(file.size() + 1);
file.read(text, file.size());
text[file.size()] = 0;
std::string str = text;
// Do some changes
std::string newstr = str;
newstr.replace(7,1,"5");
char *newText = new char[newstr.size() + 1];
newstr.copy(newText, newstr.size() + 1);
newText[newstr.size()] = '\0';
// Write to file again
file.close();
FILE* configFile;
configFile = fopen("config.txt", "w");
fputs(newText, configFile);
fclose(configFile);