如何用fstream对象来修改文件内容?

xhncmec 2004-09-07 08:19:37
比如我有一段文本内容(test.txt)如下:

AAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCC

我想把第二段的内容改为 11111,其它内容不变

程序有二个限制:
一、只能使用fstream("test.txt");打开文件
二、不能使用临时文件,也就是说读取和修改都在同一文件下进行。
...全文
486 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
daylove 2004-09-09
  • 打赏
  • 举报
回复
fstream("test.txt",ios::out | ios::in | ios::binary),

应该还有第二个参数,表明是以什么方式大开你要编辑的文件。


------------------------------------------------------《爱晶如梦》
『唯我独坐寒江』
『难为春城美景』
『秋黛依影随行』
『紫晶轻舞我心』
fengbaotiaorulei 2004-09-09
  • 打赏
  • 举报
回复
写进去的时候加入标识符如:'A',然后用getline();函数读取最后设置标志A就OK了
xhncmec 2004-09-09
  • 打赏
  • 举报
回复
up
grooving 2004-09-07
  • 打赏
  • 举报
回复
供你参考一下:

#include <fstream>
#include <string>
using namespace std;
int main()
{
char buf[10240];
char tmp[1024];
int i = 0;
int start_sit;
string file("c://test.txt");
ifstream fs(file.c_str());
memset(buf,0x00,10240);
if(fs.is_open())
{
while(!fs.eof())
{
fs.getline(tmp,1024);
i++;
if(i==2)
{
strncpy(buf+strlen(buf),"11111",strlen("11111"));
}
else
{
strncpy(buf+strlen(buf),tmp,strlen(tmp));
}
}
fs.close();
ofstream ofs(file.c_str());
if(ofs.is_open())
{
ofs.write(buf,strlen(buf));
cout << buf << endl;
ofs.close();
cout << "done!" << endl;
}
else
{
cout << "cann't open file!" << endl;
}
}
else
{
cout << "cann't open file!" << endl;
}
cin.get();
}
zgy166 2004-09-07
  • 打赏
  • 举报
回复
UP
geland 2004-09-07
  • 打赏
  • 举报
回复
全部读出来,清空文件,写入修改后的内容
xhncmec 2004-09-07
  • 打赏
  • 举报
回复
如何写,请给代码参考
飞在天空的鱼 2004-09-07
  • 打赏
  • 举报
回复
先读后写
hcj2002 2004-09-07
  • 打赏
  • 举报
回复
先读出来,然后在回写进去
xhncmec 2004-09-07
  • 打赏
  • 举报
回复
To: grooving(东游西逛)

能不能读出一段,清空一段,按原位置写进一段?
漂流的代码 2004-09-07
  • 打赏
  • 举报
回复
up

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧