C++中删除文件流中的数据

我用ofstreamofile(file,ios::out|ios::binary);创建了一个文件,在文件中写入了几行数据.例如:fdjskfjlkdskaewrewc... 我用ofstream ofile(file,ios::out|ios::binary);创建了一个文件,在文件中写入了几行数据.例如:fdjskfjlkdskaewrewcdsfdvfder现在我想删除第三行cdsfd 请问,有直接的函数可以实现吗?一定要创建一个中间文件要过渡吗?如果没有,要用怎样的方法实现,有没有更简洁的方法?谢谢了! 展开
 我来答
匿名用户
2013-05-22
展开全部
1.没有直接删除功能.这跟文件系统的实现有关,删除效率极低.2.如果文件不是很大,可以不用中间文件,读进内存删除操作后,把原文件关闭,再打开,再写回原文件就行了.3.文件里面的内容不能直接删除,但可以覆盖,如果你删除文件中的一段内容,又刚好在这个位置写入等长度的新内容,就可以实现.这也是很多下载工具采用的方法.下载时先建一个跟要下载的文件一样大小的文件.然后再把下载的内容覆盖进去.效率可以提高很多.也就是说,不能删除"cdsfd" ,但可以直接就把它改成"12345"
青鸟中关村专家
推荐于2016-05-09 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部

    流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的。

    

    在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括文件I/O,stream这个类有两个重要的运算符:

1、插入器(<<)

向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,

    cout<<"WriteStdout"<<'n';

就表示把字符串"Write Stdout"和换行字符('n')输出到标准输出流。

2、析取器(>>)

从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。


在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。


附件为使用C++文件流实现删除数据的功能!


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-22
展开全部
貌似没有。从来没试过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式