作者QQrzQQ (QQ)
看板Programming
標題[問題] 連續 open 檔案失敗
時間Sat Apr 9 22:48:33 2011
最近遇到一個問題
連續讀檔的時候
第二個檔案會一直打不開
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