这个初级读取文件的C++代码为什么出现这种情况?(基本的ifstream),判断文件是否被打开..

这个初级读取文件的C++代码为什么出现这种情况?(基本的ifstream),判断文件是否被打开..,第1张

帮你改了改,gc++/BC++5.5都编译过的了.

原程序的主要问题是,根本还没有打开文件.

#include <iostream>

#include <fstream>

using namespace std

int main()

{

const int filesize = 100

char filename[filesize],str[filesize]

ifstream inFile

cout <<"输入你的文件名:"

cin>>filename

inFile.open(filename)//打开文件

if (inFile.good()) //判断文件打开状态:成功or失败

{

cout <<"文件被打开了"

inFile.getline(str,filesize)//打开文件测试:读取一行

cout<<endl<<str<<endl//输出

}

else

{

cout <<"不能打开" <<filename <<"文件"

}

return 0

}

if(a.fail())

if(!a.good())

if(!a)

上面3个等价

但上面的无法检测到 : 以不合适的文件模式打开文件失败

a.is_open()可以检测到这个错误

所以推荐使用 if(!a.is_open())

////////////////////////////////////////////////////

ifsream对象默认的是a.is_open()这句话说的不对

应该讲:ifstream对象被隐式转化成bool型

a.is_open()也返回bool型

/////////////////////////////////////////////////////////////

下面是我搜索的

ifsream父类中有类型转换函数//

类型转换函数的定义:

operator void *() const {

if(state&(badbit|failbit) )

return 0

return (void *)this

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12014529.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存