作者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