设为首页收藏本站|繁體中文 快速切换版块

 找回密码
 立即加入
搜索
查看: 3057|回复: 2

ifstream.close() 错误

[复制链接]

该用户从未签到

累计签到:1 天
连续签到:1 天
发表于 2011-5-28 15:16:55 | 显示全部楼层 |阅读模式

马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!

您需要 登录 才可以下载或查看,没有账号?立即加入

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。/ P8 _' p1 N; x  A( S( m( v1 i/ `) O) Y
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。% J) p& K+ u( T1 e" y/ ]) Y

/ m/ i6 j9 z; P% {void        KBPAClass::CountList()                //统计各类卡片的数量                & f* w) f( n4 Y: {3 q$ u
{        ' g: h* Y0 ?( t$ ~3 t  }  J
        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空
' x/ b+ \% v$ z. M' w# b' t    {4 F1 V. c! y$ H% ?4 [
        cout<<"\n数据不完整,缺少DAT文件输入路径!";6 J; `$ t; }* [' x5 [, X3 I
        exit(0);
0 s! S4 U- J5 z- y4 R    }2 F: s" l, K( G$ t* ~! t; \$ B4 N0 n
        ifstream fin(m_strDatInFile.c_str());. J) o8 Y( u' P
        if(!fin)3 ]( H1 E( @; w* S
        {        * {3 E0 t- p: s0 S  i3 w
                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;1 V! n. C" N! }# b
                exit(0);* i* T0 H4 F) ]6 Y
        }
% E* R5 A8 O# T* a3 @: K0 y        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些
" F; J3 ?( I, |3 ]        while(int(fin.tellg())!=-1)9 q% d) Y0 t% s+ V) E& ^. G3 S+ r
    {
5 W& Q( n* j! H* G, I  C- O                for(int i=0;i<sizeof(buffer);i++)( a0 B! F# ?/ ]. K- ^4 x
                {. S9 q# A; `) U
                        fin.get(buffer[i]);
0 A: C7 S# {0 w                        if(buffer[i]=='\n'||fin.eof())
; E, a5 n) i/ ^                        {
. R8 j1 Q; {3 V5 {1 m) t8 X                                buffer[i]='\0';5 H# a# V( `  K" q* _% |
                                break;
- L! q+ |: \  U; [6 \4 M                        }0 ]/ k+ J/ _. ^. \9 v$ ?/ b! e
                }
: P1 Q' N  V1 k& {                buffer[sizeof(buffer)-1]='\0';
3 t. d* c3 L/ W: S- I4 x                string s(buffer);
" A* J: t( R. x: ?8 P                if(s.size()<2) continue;3 |  t+ Z" Q1 ]: H# l8 @' W+ _
                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句: z, j* Z) h4 P
                {. L: I/ |* `5 u, F5 }9 c
                        m_nCtrlNum++;
/ j8 }9 C4 O9 q+ f! s4 M1 z- |                        if(s.substr(0,5)=="(END)") ) y' f/ s  M/ Q. C6 {/ K/ p! z; ?
                                break;
" }! a- H, T' N0 j                }
7 V' ]1 T, S8 u  v( P" Q. d}8 P. Z  N7 r- v5 ^1 k
fin.close();0 E/ Z$ o: ?6 e6 b% ?
}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到:1 天
连续签到:1 天
 楼主| 发表于 2011-5-28 15:38:58 | 显示全部楼层
不好意思,看来是我在其他模块中的问题。问题不在fin.close()上,不知道怎么删贴,结了吧。
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

尚未签到

发表于 2012-5-6 22:03:31 | 显示全部楼层
"真诚赞赏,手留余香"
还没有人打赏,支持一下
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

招聘斑竹

小黑屋|手机版|APP下载(beta)|Archiver|电力研学网 ( 赣ICP备12000811号-1|赣公网安备36040302000210号 )|网站地图

GMT+8, 2026-10-10 02:59

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表