ifstream.close() 错误
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。
void KBPAClass::CountList() //统计各类卡片的数量
{
if(m_strDatInFile=="") //检查DAT文件路径是否为空
{
cout<<"\n数据不完整,缺少DAT文件输入路径!";
exit(0);
}
ifstream fin(m_strDatInFile.c_str());
if(!fin)
{
cout<<"\n不能打开DAT输入文件,程序退出"<<endl;
exit(0);
}
char buffer; //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些
while(int(fin.tellg())!=-1)
{
for(int i=0;i<sizeof(buffer);i++)
{
fin.get(buffer);
if(buffer=='\n'||fin.eof())
{
buffer='\0';
break;
}
}
buffer='\0';
string s(buffer);
if(s.size()<2) continue;
else if(s.substr(0,1)=="("||s.substr(0,1)=="/") //标志或控制语句
{
m_nCtrlNum++;
if(s.substr(0,5)=="(END)")
break;
}
}
fin.close();
} 不好意思,看来是我在其他模块中的问题。问题不在fin.close()上,不知道怎么删贴,结了吧。 ::handshake::
页:
[1]