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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

尚未签到

发表于 2011-5-28 15:16:55 | 显示全部楼层 |阅读模式

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。( g( e2 l6 T6 Q: t. }( z1 D
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。
  b$ B: }; U% `- r# _" r/ ~) Y6 t' D
void        KBPAClass::CountList()                //统计各类卡片的数量                ; a! P- C: M& s1 Q0 }- `! q0 T
{        4 H1 v! f6 z# U7 K; |* e
        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空
) i$ I9 y3 u+ u7 V! w0 Z    {
/ w. c9 a2 j; G6 n: o# K        cout<<"\n数据不完整,缺少DAT文件输入路径!";- K5 v. D2 v  T& K
        exit(0);
" S" F: V9 T# y    }
: z  d  j/ q8 k& p( T        ifstream fin(m_strDatInFile.c_str());# D7 I! A5 O  U  c0 c* F3 r
        if(!fin)* d' J) Y. L: d" O( M" R* ^
        {       
1 I$ t3 ?  t7 I9 m* I2 [                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;3 p( \& r  o* O  L9 y  ~
                exit(0);3 @- B, W8 {8 Q- [' E
        }( n' D$ ]! X) D" R% z: M9 \& i
        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些
) ^' _) @5 N5 L: G  Z        while(int(fin.tellg())!=-1)% \& \  M$ Q- P; P6 ~8 ^
    {3 v: h' o9 s0 @
                for(int i=0;i<sizeof(buffer);i++)  c! P" C- |1 O
                {  E8 J& I$ A. l* _
                        fin.get(buffer[i]);0 g9 B$ I, k. ?0 y! p4 a
                        if(buffer[i]=='\n'||fin.eof()) + b3 s5 U+ Q4 u/ `( G1 K, j
                        {2 j! Q) w  Z  l
                                buffer[i]='\0';6 |, R1 Q% n5 D4 N
                                break;; N8 Y% \% @/ W% a, L/ q1 s% g
                        }/ y* s8 k# f; E3 [
                }
) l: v3 S! e2 j: Y- p# R) ~8 _                buffer[sizeof(buffer)-1]='\0';
" T3 A8 K  `% ?+ g2 d3 n                string s(buffer);$ I9 c4 f6 U! N. Q  `/ R' A
                if(s.size()<2) continue;; o7 K; ~* C% a) G; H6 P
                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句3 R1 o2 t+ b" p+ k* x
                {
! {' G3 k% l. c, @                        m_nCtrlNum++;
; \; j# U- E* P* d& `                        if(s.substr(0,5)=="(END)") / h3 @) J" g' V6 N
                                break;/ [/ M; r4 R8 u3 H; L% l/ U
                }6 q; k( x' U$ \; K5 }) t$ z
}  C* h5 o. Q$ g5 U: `7 R6 ~
fin.close();2 A5 r/ V& g6 R8 n" s6 u: [& ?( d
}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

尚未签到

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

该用户从未签到

尚未签到

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

本版积分规则

招聘斑竹

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

GMT+8, 2024-4-24 13:01

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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