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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

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

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。3 _$ e7 }& c' q: w
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。$ `, z. M$ x  Z; _: f" w% a* o# t8 M

: Z1 ?& b' D+ b" O, L7 Fvoid        KBPAClass::CountList()                //统计各类卡片的数量               
. D& m. O$ _" e0 s# ~2 O1 y$ z{       
. l- o7 ?# [. L, c( ~  G        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空
  {; N8 x8 ?* ?. j& z; H6 Z7 H    {1 a* P$ X+ v* B6 T0 @* C
        cout<<"\n数据不完整,缺少DAT文件输入路径!";8 X1 P3 m, ?% x
        exit(0);( e& j7 N8 m& e" s, _: r
    }
" H5 g' E! {: [        ifstream fin(m_strDatInFile.c_str());9 w6 \5 V( P& A  n* I+ P
        if(!fin)
  r5 {. `, v6 V9 r5 E& |: ~        {        ( R" k7 ~' V9 q7 _' w% \6 U, J# S5 C$ r
                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;, Q' u' B8 C1 f) y. Y8 a
                exit(0);
$ U3 m% `/ M/ B: \        }
  _# b8 I3 T. T/ m  ^        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些7 i( A, ?, a, b! X
        while(int(fin.tellg())!=-1)
' h/ G- u+ P& ~- s: M    {
- q3 V, s& y( e  r5 O                for(int i=0;i<sizeof(buffer);i++)2 w" ~7 K6 v6 i) C
                {
7 F! M( e! c( n$ v3 r& r' l                        fin.get(buffer[i]);. W7 |) [/ t5 e% ~
                        if(buffer[i]=='\n'||fin.eof())
! m: k5 ]  a9 Z- t8 `                        {
% D; @. o2 H5 |) {                                buffer[i]='\0';
' m. S4 o% W  s( K' Z                                break;: A  g' q- |) v! }/ d! }' H
                        }$ I" S8 [1 A; Q: d1 \/ G! K% _
                }5 b, m  @8 Z. ^# y/ x3 R8 e' {
                buffer[sizeof(buffer)-1]='\0';; h& r! i' M) Q) ]& N# y) E
                string s(buffer);9 x* b. P7 O+ E1 y* i
                if(s.size()<2) continue;4 Y# U% t# _! s. o1 r4 K) L
                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句& L# x$ z' B- {/ W1 d
                {% s. X# \9 A1 X% d& q2 c
                        m_nCtrlNum++;
9 @: h2 `$ Y( V6 e! k- N* B# u                        if(s.substr(0,5)=="(END)")
! d# ~- G4 `$ {5 `% L- g) ]                                break;
! o) Y) T) H/ }* T) S$ q0 g                }
. C0 u: A8 N0 ~8 L}! f" G9 t  h& ?5 A8 j+ d6 X
fin.close();
6 o1 y- m6 h  Z+ s$ ~; `}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到: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-4-22 11:17

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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