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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

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

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。
9 o. K/ ~! x2 X* W! X0 ~& E当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。5 i4 W5 }9 f/ B! b% S8 r

, g5 M5 K( f5 `% rvoid        KBPAClass::CountList()                //统计各类卡片的数量                2 f% {  G* e, x  ~# r. g
{        + q' T: O+ v' H7 j+ b; I6 D8 |: N/ \
        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空
4 p6 c0 f: E) g3 s* Z    {8 x& E- F3 V6 h2 q$ s
        cout<<"\n数据不完整,缺少DAT文件输入路径!";, k0 J" g; n* e! m( j7 U
        exit(0);$ L2 D% n3 u1 N
    }' w7 W/ n; S/ C/ W7 ?
        ifstream fin(m_strDatInFile.c_str());" S- H( [. L/ e% ?3 p
        if(!fin)
" ], g" x  s8 _$ \/ e        {          m: M5 g+ j9 h: h
                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;
, m* P) a' t4 ^7 x& D; |  y                exit(0);
9 z* Y" a6 i$ Y; J/ O* z1 q0 s/ f        }7 Z. H- M, |1 Q
        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些
3 r0 s" `5 p/ M$ N        while(int(fin.tellg())!=-1)
$ q+ ?* i- L3 s3 O5 ~/ h( }" i    {9 r5 u) ?) n5 A* Z
                for(int i=0;i<sizeof(buffer);i++)
! R. f/ @% h$ L; J$ T' G& M6 Z9 `                {  s: O5 s! H8 D, K
                        fin.get(buffer[i]);2 h6 d9 @# S. h; y
                        if(buffer[i]=='\n'||fin.eof())
/ w" A) ~( a/ b/ k3 ?: b5 `                        {
  B( ~6 [1 D& N' ?! Q                                buffer[i]='\0';
& @  n0 _" C0 i, m' L! P                                break;
( V+ S, u( i1 ]7 \                        }' w$ B5 G/ g( R0 i, z+ _
                }8 [( W7 `  r$ m. T
                buffer[sizeof(buffer)-1]='\0';
, e7 P! u! ^) p4 G0 O8 w" l                string s(buffer);! E: @# R/ A  z: n  E
                if(s.size()<2) continue;
2 W( E& c, x  Y7 U% I; k' b                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句
( N  I* c: a+ |* _  _/ y' D                {
: [7 s9 t9 r' S9 s/ D! {0 y# ~4 |+ T                        m_nCtrlNum++;
2 }8 \4 N6 y' }2 J. p% `; e# Y                        if(s.substr(0,5)=="(END)")
/ }; U. Q% h, X1 p) H* ?3 @5 e# f  f                                break;
  }3 _+ T5 f- d, k; ~8 N                }; n7 v+ _& y& ^2 Q& q
}
$ S9 j; i" n% J! ~# j. Hfin.close();
) H; R! D- y, x9 l6 W; [& I0 h$ w$ Q}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到: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, 2025-12-15 07:06

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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