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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

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

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。  u& l9 S! j3 M3 w
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。
9 M# L9 G/ a4 N8 G/ O+ R! A) b* `5 b. M3 D& A7 z
void        KBPAClass::CountList()                //统计各类卡片的数量               
8 Z! K  H$ K6 [{        9 z. u- w$ U) u* e  [+ r2 b* w
        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空+ g5 |2 h% ^+ R3 c6 j& Y4 t) |
    {: n0 u* j! L3 U! X$ \2 Q/ f
        cout<<"\n数据不完整,缺少DAT文件输入路径!";
! v' Q9 Q) Q9 ~        exit(0);
6 W3 s, S1 a. ]7 h4 c' x    }9 {7 _6 {, E/ ~0 a3 N; X
        ifstream fin(m_strDatInFile.c_str());" w5 T+ W5 t+ Y7 `0 D
        if(!fin)
' [: B  K! `5 J% [. ]$ Y        {        3 W7 j: X2 ?8 V, p; e! w1 G
                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;8 C/ r- N; T2 a% l8 ]2 O
                exit(0);
7 D" |- ~$ S4 R( e; s        }& w( m6 M  J4 P3 s6 r5 u
        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些3 T% L0 q3 L5 H( M/ `4 F: Z
        while(int(fin.tellg())!=-1)1 y/ l6 @2 J  o1 G& I' U
    {
/ U$ g3 c* M" }                for(int i=0;i<sizeof(buffer);i++)
; }) D' {+ i/ \, w" S% n9 z2 h. Z                {. k$ ?# c0 M/ p* h% P
                        fin.get(buffer[i]);) r7 E8 L" Z* u+ b: e, R) A: G
                        if(buffer[i]=='\n'||fin.eof()) 7 s4 Z* k& Q0 O9 t
                        {
$ f/ u8 \# u; o* V                                buffer[i]='\0';* |1 Y7 {7 u& Q  s. u- d2 g
                                break;
, f* m# u8 F" {                        }
; A  x6 l3 V" d                }8 L1 I$ ~" L2 i( K& T
                buffer[sizeof(buffer)-1]='\0';
/ Q# j* o0 E/ E( W: X/ S                string s(buffer);9 _, t, g8 Q' X1 z+ U" ~' y- k
                if(s.size()<2) continue;+ _- W; x/ I. A' Y: ^
                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句/ y+ F7 n4 L! @4 N  _. A
                {" ~/ q" R; x5 a. R" c
                        m_nCtrlNum++;# }# m+ W" z1 n& z* g: \3 K& L
                        if(s.substr(0,5)=="(END)") % A/ L) G0 L1 |
                                break;
& w5 ^- S. [& P% h+ y                }; o+ o& a/ w8 Y, s& d# @! Z( r
}) A: H1 n9 ~7 K) B# L2 R" }
fin.close();
& e9 q4 [( {! V8 P}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到: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-30 13:35

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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