看板 Programming 關於我們 聯絡資訊
最近遇到一個問題 連續讀檔的時候 第二個檔案會一直打不開 fstream input; string temp_string; while(true) {[A input.open("input_name", std::ios::in) while(input.peek()!=EOF) { input >> temp_string; } input.close(); } 遇到的狀況是 只要把 while(input......)註解掉 一切都很正常 可是使用EOF做判斷時 第二個次迴圈就無法開檔 我有檢查過每一次都有關檔的動作 (用input.is_opem()去看) 而且我讀的檔案似乎因為編碼問題 結尾沒有EOF ?? (unix format?) 之前也有遇過 採用的對策是 針對每個input檔案結尾加一個換行符 再存檔就可以了 可是這次卻沒有用 感覺好像是用 fstream 一次讀一個字串會讀到不該讀的東西... 可是也不確定為什麼 想請教諸位高手 thx in advanced -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.152.40
firejox:while(input >> temp_string) 試試看123.240.128.241 04/10 01:40
tropical72:close後再接 input.clear() 清 flag. 180.177.72.67 04/10 02:02
QQrzQQ:謝謝 我試看看 111.243.152.40 04/10 09:39
QQrzQQ:一樓的方法失敗 ~ 二樓的OK 111.243.152.40 04/10 10:18
QQrzQQ:可是為什麼要自己清flag呢? 111.243.152.40 04/10 10:18
tropical72:讀完檔後,EOF 的 flag 還在,所以下次 180.177.73.222 04/12 02:14
tropical72:再讀的時候,把 EOF 給清掉. 180.177.73.222 04/12 02:14
QQrzQQ:謝謝你們111.243.144.201 04/14 21:03