原程序的主要问题是,根本还没有打开文件.
#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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)