| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1686 人关注过本帖
标题:关于fstream类打开文件的判断方法
只看楼主 加入收藏
魔域妖刀
Rank: 1
来 自:北京
等 级:新手上路
帖 子:2
专家分:2
注 册:2009-7-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
关于fstream类打开文件的判断方法
最近使用了一下fstream这个类,发现在打开文件判断的时候,有一点小问题,自己不是很明白,希望大家解答一下。

fstream fs("xxx.dat",ios::in|ios::out|ios::app);
if( !fs )
{
  ……
}

不论什么情况,也就是xxx.dat存在不存在的时候,都会执行if中的语句,这是为什么?我记得ifstream和ofstream都是使用这个方法进行判断的。
后来网上查了一下资料,说fstream不能使用if(fstream)来进行判断,需要使用is_open()这个方法。但没有说明具体为什么不能使用 if(fstream)这样的方法进行判断,请问为什么不行呢?谢谢大家。
搜索更多相关主题的帖子: fstream 
2009-07-30 10:50
gz81
Rank: 5Rank: 5
等 级:职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
收藏
得分:10 
新发现:如果不加ios::app参数,!fs 就会假了.
不知道原因,网上搜索不到答案.等待解答.

我的空间:http://student./space.php?uid=116706
2009-07-30 12:04
tinjp
Rank: 5Rank: 5
等 级:职业侠客
帖 子:52
专家分:340
注 册:2006-11-4
收藏
得分:10 
以ios::app|ios::in打开,不管有没有文件,都是失败。
fstream流,默认是ios::in,所以如果没有文件,ios::app和ios::ate都是失败,ios::app不能用来打开输入流,即不能和ios::in相配合,而ios::ate可以和ios::in配合,此时定位到文件尾;如果没有ios::in相配合而只是同ios::out配合,那么将清空原文件   
你可以参考http://topic.

[[it] 本帖最后由 tinjp 于 2009-7-30 17:32 编辑 [/it]]
2009-07-30 17:29
快速回复:关于fstream类打开文件的判断方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021479 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved