下列C++中判断文件是否为空的方法有什么不同

当用fstreamin("")定义对象的时候if(!in)就报错。而用ifstreamin("")定义对象的时候if(!in)就不报错。还有ifstreamin("c:\... 当用fstream in("")定义对象的时候 if(!in)就报错。
而用ifstream in("")定义对象的时候 if (! in)就不报错。

还有
ifstream in("c:\\test.txt",ios::in)//此时文件不存在
if(!in)cout<<"空";
else cout<<"非空";
第一次运行时会显示空。同时建立了test.txt文件
而当对text文件输入信息后回到程序在运行显示还是空。

反过来,如果首先在目录下建立test.txt文件并写入数据。
第一次运行显示 空。
以后不管是否删除文件数据,显示的都是空。

还有如果是if(in.eof())来判断的化输出的都是非空

如何判断文件是否有内容呢?if(in)和if(in.eof())有区别么?fstream,ifstream和ofstream有什么区别呢?
很困惑,忘高手指点,不胜感激
展开
 我来答
zzuqqiu
推荐于2016-09-15 · TA获得超过4297个赞
知道小有建树答主
回答量:721
采纳率:100%
帮助的人:876万
展开全部
首先声明一点,if(!in)cout<<"空";
这句代码不是用来判断文件是否为空的,而是判断文件是否成功打开。
第一次运行时,ifstream in("c:\\test.txt",ios::in)这个语句发现没有这个文件,再检查if(!in)cout<<"空";文件不存在故不能成功打开,故cout<<"空";
反过来,如果在目录下建立test.txt,第一次运行,不可能显示 空。我已经试过了。
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式