如何打开一个已经存在的文件,在文件头开头写点东西?

fangrk 2002-07-24 02:13:42
要求用fstream/ofstream。(Borland C++ Builder 5)
我刚才用了一个笨办法:先把文件复制保存,新建一个文件,写点东西,然后把保存的文件在一行一行的写到新文件中间……
我的文件一行要有五百多字符,用string读出来再写进去就在最后多了一个空格,很讨厌,而且我觉得这么操作效率不高。
还有:
fstream可以有seekg
ofstream由seekp
这两个有什么区别?
...全文
228 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
anglely168 2002-07-25
  • 打赏
  • 举报
回复
干什么要用stream?用FileStream或MemoryStream不是都挺好的?
fangrk 2002-07-25
  • 打赏
  • 举报
回复
关于多出来的空格,敬请:
http://www.csdn.net/expert/topic/900/900632.xml?temp=8.892238E-03
fangrk 2002-07-25
  • 打赏
  • 举报
回复
filestream我没有使用过。
string支持siza(),reserve(..),resize(..)……
feahoo 2002-07-24
  • 打赏
  • 举报
回复
可以,
FILE *fp;
long pos = 你想要的位置;
if((fp = fopen("filename", "r+w")) != NULL)
{
....
fseek(fp, pos, SEEK_SET);
fwrite( , , fp);
.....
fclose(fp);
}
LeeMaRS 2002-07-24
  • 打赏
  • 举报
回复
用ios::app的话指针是不能移动的,用ios::in
Leung_ 2002-07-24
  • 打赏
  • 举报
回复
如果文件不大的话,可以考虑先把全部文件内容拷到内存,然后在开头加入要加的东西(原来的就覆盖掉了),再把原文件内容加在文件尾。
Oversense 2002-07-24
  • 打赏
  • 举报
回复
你用二进制读写就不会多空格了
fangrk 2002-07-24
  • 打赏
  • 举报
回复
那个存在的文件也是我创建的,所以如果是覆盖的话,我可以在创建的时候在开头多写几个std::endl就可以了。
我曾经用fstream(...,ios_base::app|ios_base::out)打开后,seekg(0);然后开始写一行内容,但发现写在文件的后面,不是文件的开头!(BCB 5.0)
fangrk 2002-07-24
  • 打赏
  • 举报
回复
放宽些限制:可以使用流操作(比如:i/o fstream,i/o stream)。
我想不明白,为什么
std::ifstream inFile(...);
std::ofstream outFile(...);
while(getline(inFile,content))
outFile<<content<<std::endl;

outFile的内容会比inFile的内容每一行后面多一个空格!
inFile的每一行都是五百多的字符,中间包括很多空格,总觉得用这种方法效率低,而且平白无故的多出空格来。也想到过用system("copy xx+yy xx")命令,万不得已我可不想用(要跳出一个MS-Dos窗口,然后消失,不爽!)
zheng_can 2002-07-24
  • 打赏
  • 举报
回复
我觉得你的起点很不错呀
是不是你保存就有文件的方法有问题
看看能不能直接利用 ifstream 和 ofstream 直接将文件内容保存起来
LeeMaRS 2002-07-24
  • 打赏
  • 举报
回复
插入内容? 那似乎是不可能的.
如果是要覆盖就好说多了.我想你也是会的.
fangrk 2002-07-24
  • 打赏
  • 举报
回复
我想直接在那个文件开头部分写!
dot99 2002-07-24
  • 打赏
  • 举报
回复
新建一个文件,写入东西
然后再把两个文件连接起来,呵呵

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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