diguasix 发表于 2011-5-28 15:16:55

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();
}

diguasix 发表于 2011-5-28 15:38:58

不好意思,看来是我在其他模块中的问题。问题不在fin.close()上,不知道怎么删贴,结了吧。

niely0 发表于 2012-5-6 22:03:31

::handshake::
页: [1]
查看完整版本: ifstream.close() 错误

招聘斑竹