在这个程序中我想改变文件中的一些值。现在我在附加模式下打开文件并将我的搜索指针移动到我给定的位置。但问题是它在文件末尾写入数据而不是那里有寻找指针。
#include<iostream>
#include<fstream>
using namespace std;
int main(){
//creates a file for testing purpose.
ofstream fout;
fout.open("test.txt");
fout<<1;
fout<<" ";
fout<<34;
fout<<" ";
fout<<-1;
fout<<" ";
fout<<-1;
fout.close();
//reads the data in the file
ifstream fin;
fin.open("test.txt");
fin.seekg(0,ios::beg);
fin.unsetf(ios::skipws);//for taking whitespaces
char sp;
int item;
fin>>item;
while(!fin.eof()){
cout<<item<<endl;
fin>>sp;//to store whitespaces so that fin can take next value
fin>>item;
}
cout<<item<<endl;
fin.close();
//opening file for editing
fout.open("test.txt",ios::app);
fout.seekp(5,ios::beg);
fout<<3;
fout.close();
return 0;
}
答案 0 :(得分:2)
如果您阅读例如this reference您会看到std::ios::app
表示
在每次写入之前寻找流的结尾
因此,无论您在何处寻找,所有写入都将在文件末尾完成。
修改文件的最佳方法是将其读入内存,然后将其重写为临时文件,然后将临时文件移到原始文件上。