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

我用ofstream ofile(file,ios::out|ios::binary);创建了一个文件,在文件中写入了几行数据.例如:fdjskfjlkdskaewrewcdsfdvfder现在我想删除第三行cdsfd 请问,有直接的函数可以实现吗?一定要创建一个中间文件要过渡吗?如果没有,要用怎样的方法实现,有没有更简洁的方法?谢谢了!

1.没有直接删除功能.这跟文件系统的实现有关,删除效率极低.2.如果文件不是很大,可以不用中间文件,读进内存删除操作后,把原文件关闭,再打开,再写回原文件就行了.3.文件里面的内容不能直接删除,但可以覆盖,如果你删除文件中的一段内容,又刚好在这个位置写入等长度的新内容,就可以实现.这也是很多下载工具采用的方法.下载时先建一个跟要下载的文件一样大小的文件.然后再把下载的内容覆盖进去.效率可以提高很多.也就是说,不能删除"cdsfd" ,但可以直接就把它改成"12345"
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-09

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

    

    在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++文件流实现删除数据的功能!


第2个回答  2013-05-22
貌似没有。从来没试过。
相似回答