求教关于C++文件输入流结束判断

ifstreamin("..");用if(in)和用if(!in.eof())判断如果文件未结束执行语句,原理上有什么区别?intmain(){ifstreamin("m... ifstream in("..");
用 if(in) 和用 if(!in.eof()) 判断如果文件未结束执行语句,原理上有什么区别?
int main()
{
ifstream in("ma1.cpp");
char a[200];
int n=1;
in.getline(a,199);
cout<<a<<endl;
while (in)
{
in.getline(a,199);
if(???) {
cout<<a<<endl;
n++;
}
}
cout<<n<<endl;
return 0;
}
如果文件最后有空行,两者一样;
如果没空行,用if(!in.eof())会忽略最后一行,但if(in)不会(和有空行一样)为什么?
展开
 我来答
carea
2013-01-09 · TA获得超过459个赞
知道小有建树答主
回答量:395
采纳率:65%
帮助的人:106万
展开全部
读写一行用getline(istream,string),文件读取判断结束的方法一般如下:
while(true)
{
fin>>x;

if(fin.eof())

break;

//do something

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式