请教!文件写入问题

tangshuiling 2007-11-26 05:11:02
问题可能过于简单,请勿见笑。
设文件中内容为“aklfjklasjflksaj fds122131" 我想改变fds为abcde(在不破坏文件的基础上),我自己试着用ios_base::app的方式打开文件操作,用文件指针定位的方式写入数据,但每次都是追加在文件的尾部,不太明白,请不吝赐教!!
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckt 2007-11-26
  • 打赏
  • 举报
回复



#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
ifstream iFs("d:\\yourfile.txt");
string stBuffer;
// 读取数据到string中
getline(iFs, stBuffer);

// 找出fds的位置
int iPos = stBuffer.find("fds");
// 用abcde替换fds
stBuffer.replace(iPos, strlen("fds"), "abcde");

// 创建新文件写入
ofstream oFs("d:\\yourfile.txt");
oFs << stBuffer;
}
ckt 2007-11-26
  • 打赏
  • 举报
回复
你可以把数据全部读出来存放到缓存中
修改后在写入到文件里
tangshuiling 2007-11-26
  • 打赏
  • 举报
回复
谢谢以上几位回帖!我想用c++的方法解决,要用ifstream与ofstream类。
gongyiling 2007-11-26
  • 打赏
  • 举报
回复
应该可以用appand的模式打开文件,然后把文件指针定位到所到修改的地方,覆盖原信息就行了,不过也就仅限于覆盖操作,不能插入
ccmfk 2007-11-26
  • 打赏
  • 举报
回复
要加#inclide <stdio.h>
ccmfk 2007-11-26
  • 打赏
  • 举报
回复
用C语言的方式也可以:
FILE* file;
file = fopen("文件名","r+");
char temp[80];
memset(temp,0x0,80);
if(file)
{
fread(temp,80,1,file);
//在temp字符数组里把"fds"改为"abcde",这个地方自己写了;
fwrite(temp,80,1,file);
fclose();
}
也就是先把文件读到一个数组里,在数组里更换,更换后再写入到文件中,你用的app是在文件内容的后面再追加新的内容.
dotboy 2007-11-26
  • 打赏
  • 举报
回复
app应该就是append,也就是把内容添加到文件尾的吧,先读文件读到空格,记住指针的位置,再进行替换.

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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