#include<iostream>
#include<sstream>
#include<fstream>
#include<string>
using namespace std;
void main()
{
fstream f1;
f1.open("d:\\me1.txt",fstream::in|fstream::out); //打开文件用于写,若文件不存在就创建它
if(!f1)return; //打开文件失败则结束运行
string line,word;
while (getline(f1,line))
{
stringstream stream(line);
while (stream>>word)
{
f1.seekg(5,ios::beg);//将文件指针定位到文件开始后五个字节处
f1<<"xxxusen";//往文件中写入这些字符。会直接替换文件中原来位置的内容,是覆盖而不是插入
}
}
f1.close(); //关闭文件
f1.clear();
}
从网上看到别人的文章,想替换文件的内容,操作都是把文件内容先读取到一个buffer中,然后替换,接着再往文件中重新写入buffer所有数据。等于说是把文件内容整个重写了一遍。
如果用seekg()方法,可以实现等字节的内容替换。比如想把"ABC"换成"123",就可以用上面的代码,否则还是重写一遍文件内容吧。