作者jimian (ian)
看板EE_DSnP
标题[问题] 同一档案不能读两次?
时间Sun Jan 18 21:08:40 2009
如题...因为我的程式(期末project)有需要读入文字档(当做题目),
而我的程式允许使用者多挑战几次,
不过我测试时,发现同样的文字档好像不能读两次...?
以下是我碰到的状况:
在玩第一次时,文字档的读取正常,不过多显示了最後一个字
(像Book会显示成Bookk),
之後程式跳回选单画面,此时我选择再玩一次,
结果发现程式读入的是乱码,而不是文字档的原始内容,
後来我有做以下调整:
file_name="article.txt"; <-string
article.open(file_name.c_str(),ios::in);
article.seekg(0,ios_base::beg); <-强迫程式跳到档案开头
不过程式在进行第一次游戏之後,还是没有跳到档案开头去读
後来我检查後发现:只要跑完第一次之後,程式读档时就会卡在EOF,即使用上述方法
强迫程式跳到开头也没用.....
请问这样要如何解决呢?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.133.129.230
1F:推 timrau:补个article.clear(); 把error flags清掉 01/18 21:26
2F:推 wmin0:其实你可以把档案关起来在重开XD 01/18 21:57
3F:→ jimian:clear()有效 谢谢1F! 01/18 23:16
4F:→ jimian:不过在读档时还是会有"最後一个字重复显示"的问题 01/18 23:17
5F:推 timrau:请问你怎样读文字、怎样判断"最後一个字"? 01/19 00:34
6F:→ timrau:istream::eof()是个有点不直觉的function 01/19 00:34
7F:→ jimian:我就是用article.eof判断是否读到档案结尾...不过每次都会 01/19 10:12
8F:→ jimian:多读一次最後一个字 01/19 10:12
9F:推 james0419:你有没有看老师的lecture note#9 P.14 "What's wrong" 01/19 15:04
10F:→ jimian:後来解决了 好像光用eof可能会判断错误 因此我改成先判断 01/19 15:21
11F:→ jimian:档案内有多少个字 当输入字数等於档案字数时就停止读取 01/19 15:21
12F:推 ric2k1:Uh... 就用 do...while() 就好了 01/19 21:18