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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

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

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。3 F# k$ F. j0 |" R
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。* H# @) ]8 c' ?- p, m

6 v( m) b5 @/ hvoid        KBPAClass::CountList()                //统计各类卡片的数量               
* c7 q) H1 q3 M{       
- S; y4 {$ S# u' C: l  ]" X        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空' e: o& d3 C0 y. f3 J+ i) K$ B
    {
3 @  |0 {5 f. O        cout<<"\n数据不完整,缺少DAT文件输入路径!";( }5 W8 ?! w' I( \* p7 _8 q
        exit(0);/ `) _- F0 J' v4 Z
    }
  x- P0 k+ H- l' C5 Z' ~0 |  v        ifstream fin(m_strDatInFile.c_str());
5 t3 v2 r: z+ ^  d- O        if(!fin)
* `/ f# [- T4 Y( X        {       
1 W0 k4 F# b8 S" W$ ]9 Q" I                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;. t7 q  P1 h+ |5 H: i2 W
                exit(0);
8 B) Z+ e/ g4 f9 Z. v( P" g        }" [/ h# T# [" b3 f, g6 v9 Y# t
        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些2 ]" t5 V# q% R/ x% J! x
        while(int(fin.tellg())!=-1)* g- z, i  N. ^  t8 |: j
    {
4 n4 r# K: G4 y; q& D5 n) g6 ^. }- C                for(int i=0;i<sizeof(buffer);i++); B6 }; r+ k6 v% R  n
                {7 X+ X" t. _. S; F8 T/ F, a3 p
                        fin.get(buffer[i]);% g: {. y8 X3 X/ Z  V( B4 s% X: ~
                        if(buffer[i]=='\n'||fin.eof()) 5 y4 P, O; s  v7 D' p2 k# y3 w/ k
                        {( s: \( H) U; Y' I2 {
                                buffer[i]='\0';$ m; E8 @; _2 }
                                break;
, w! ]' H% y  e6 t/ T                        }
1 v4 O& i! t/ h* o                }
8 i* `' x' A& ^( N7 ~) R! E. F                buffer[sizeof(buffer)-1]='\0';
" ]# j# C5 j$ T4 ~                string s(buffer);
- t' Y& w3 _0 E" `$ D) U                if(s.size()<2) continue;
$ b2 w! b1 ]# d( V+ L/ K# n                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句- C! w3 y5 b( d6 ~2 Y0 T. {
                {7 U2 X* W+ _& I6 c3 S. M
                        m_nCtrlNum++;; U: J% {: ~& f+ j9 |
                        if(s.substr(0,5)=="(END)")
/ l& j& o) x2 O: G                                break;
2 T. E3 ?0 O8 v% Y3 J                }* u5 }+ A/ d5 p8 C, o
}8 [3 g+ P+ @2 O9 |( k
fin.close();5 s' @) [" h8 H5 |
}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到: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-3-19 12:03

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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