下列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有什么区别呢?
很困惑,忘高手指点,不胜感激

第1个回答  推荐于2016-09-15
首先声明一点,if(!in)cout<<"空";
这句代码不是用来判断文件是否为空的,而是判断文件是否成功打开。
第一次运行时,ifstream in("c:\\test.txt",ios::in)这个语句发现没有这个文件,再检查if(!in)cout<<"空";文件不存在故不能成功打开,故cout<<"空";
反过来,如果在目录下建立test.txt,第一次运行,不可能显示 空。我已经试过了。
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网