+ -
当前位置:首页 → 问答吧 → 急!关于 fstream 与ofstream的问题

急!关于 fstream 与ofstream的问题

时间:2011-12-15

来源:互联网

菜鸟看资料看到 fstream 与ofstream 在打开写入文件的时候都可以以追加的方式写文件 即 mode的参数都可用 ios::app
可是自己写了一个简单的代码,却发现只有ofstream 能用 ios::app 追加,而fstream却不会追加的操作,甚至连写都不能。
Why?????请赐教
代码如下:
#include <iostream>
#include <fstream>


using namespace std;

int main(int argc, char *argv[])
{
 fstream Stream("E:\\write03.txt", ios::app);
 if (!Stream)
 {
  cout<<"创建file.dat失败!"<<endl;
 }
 Stream << "我是小王.\r\n";
 Stream.close();
 return 0;
}

注:如果换成ofstream却可以顺利写入。

作者: xixi_96   发布时间: 2011-12-15

没人解答吗
在线等

作者: xixi_96   发布时间: 2011-12-15

fstream Stream("E:\\write03.txt", ios::app|ios::out);
试试

作者: Demon__Hunter   发布时间: 2011-12-15

谢谢,好用,
能解释下吗??

刚学到这里,很不理解。
资料上说的是直接用ios:app

作者: xixi_96   发布时间: 2011-12-15

那是因为fstream是ofstream和ifstream的父类,本身没有包含相应打开的参数。你要自己设定。C/C++ code

fstream Stream("E:\\write03.txt",ios::in|ios::out| ios::app);


这样你的fstream就具有写入和读出的功能了。而ofstream已经被包装过了,继承于fstream,打开的时候默认具有写功能。

作者: W170532934   发布时间: 2011-12-15

我拿你的程序运行,fstream可以顺利写入啊,什么情况

作者: zero_226   发布时间: 2011-12-15

抱歉,我记错了。ofstream不是继承于fstream的。是继承于ostream的。

作者: W170532934   发布时间: 2011-12-15

引用 5 楼 zero_226 的回复:

我拿你的程序运行,fstream可以顺利写入啊,什么情况



不会吧.运行之后是报错信息."创建失败"

作者: xixi_96   发布时间: 2011-12-15

引用 6 楼 w170532934 的回复:

抱歉,我记错了。ofstream不是继承于fstream的。是继承于ostream的。


刚看到这里,呵呵,那要怎么去解释这个问题呢?

作者: xixi_96   发布时间: 2011-12-15

求解释~~~~

作者: xixi_96   发布时间: 2011-12-15