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

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

ifstream.close() 错误

[复制链接]

该用户从未签到

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

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

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

×
不知大家有没有遇到过ifstream.close()的错误。我准备写一个统计BPA的dat文件内各卡片数量的程序,dat文件是以“(END)”结尾的文本文件。6 G! G* q  `0 h! W) N2 A! @
当(END)出现在dat文件最后一行时,程序正常,但若(END)后有一个空行,执行到fin.close()这一步会出现错误,太莫名其妙了。敬请各位高手指教。. H2 b, v( ~! Y4 g3 F

' e* S8 ]* \8 B3 y$ nvoid        KBPAClass::CountList()                //统计各类卡片的数量               
4 @1 \$ ~( {% S. Z/ ^{        $ Z/ {2 _: x3 H& E0 x4 v
        if(m_strDatInFile=="")                                //检查DAT文件路径是否为空/ o" K" B. o+ Q0 Y/ r0 H
    {. l6 p& I! y5 d- i/ n5 \  W6 N
        cout<<"\n数据不完整,缺少DAT文件输入路径!";
7 D7 J+ |3 F9 v# @- T        exit(0);8 ?6 F# N3 Y  N% R0 F
    }  B! c% }. h+ M: Z* @9 o7 |: \
        ifstream fin(m_strDatInFile.c_str());( w/ x9 w# o8 ~1 b; l
        if(!fin)4 b5 p2 ]: Y* [8 y' l! n* Q
        {        9 o7 k! I( ~- J6 Z
                cout<<"\n不能打开DAT输入文件,程序退出"<<endl;
# ?: x+ I5 ^( B* k$ {                exit(0);
2 x7 N( c& P% @0 E# H# y2 n' D        }
. U$ [* }+ ?) {4 ]% x+ y) A. w, a+ b        char buffer[240];                                //因为卡片有效位数为80(某些卡可能到90),但考虑到可能有空格,多设置一些
: h/ D( `$ j% Q; \9 d        while(int(fin.tellg())!=-1)
+ l/ L, G- q" L1 I5 x0 K, X    {8 x* R5 m9 p  T
                for(int i=0;i<sizeof(buffer);i++)
3 q/ D8 B! F( g$ F0 C                {
  h9 G0 E: L. [2 F! b                        fin.get(buffer[i]);6 g, ^5 y/ u- U  P1 H
                        if(buffer[i]=='\n'||fin.eof())
! b8 b4 y/ i; w                        {
  Z" B- T- a5 A1 ^6 c8 u1 z/ ?                                buffer[i]='\0';
5 O7 Z$ d( `9 F0 h# Z2 Y, i$ r                                break;$ ]/ w. e* ^4 R& \+ o
                        }
! P% y4 c( B" O. y                }
- Z, R8 N# n$ @: V- Z; X5 {                buffer[sizeof(buffer)-1]='\0';
, g9 t- H& E1 T; L- i/ ^8 O8 c& y% A                string s(buffer);
4 @# L4 s; Y+ c/ d' M6 k- z                if(s.size()<2) continue;
3 g6 J, {, n5 ~0 Z! s                else if(s.substr(0,1)=="("||s.substr(0,1)=="/")                                //标志或控制语句
( X2 @% }& K0 q( ~                {
9 @2 ^/ h2 }. f5 E" c2 `2 I' k                        m_nCtrlNum++;/ x" l* i' o" D
                        if(s.substr(0,5)=="(END)") - r  k% e, Z+ a2 O' |1 F
                                break;
( E  e4 F" |8 G, M                }, Q$ B; k' ]* H, j: H: J
}
/ R& i! X9 U  C, `4 L8 {fin.close();  \: i4 }9 I% w/ p' c$ n
}
"真诚赞赏,手留余香"
还没有人打赏,支持一下
楼主热帖
帖文化:【文明发帖 和谐互动】 社区精神:【创新、交流、互助、共享】

该用户从未签到

累计签到: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-18 17:41

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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