作者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
1F:→ firejox:while(input >> temp_string) 试试看123.240.128.241 04/10 01:40
2F:→ tropical72:close後再接 input.clear() 清 flag. 180.177.72.67 04/10 02:02
3F:→ QQrzQQ:谢谢 我试看看 111.243.152.40 04/10 09:39
4F:→ QQrzQQ:一楼的方法失败 ~ 二楼的OK 111.243.152.40 04/10 10:18
5F:→ QQrzQQ:可是为什麽要自己清flag呢? 111.243.152.40 04/10 10:18
6F:→ tropical72:读完档後,EOF 的 flag 还在,所以下次 180.177.73.222 04/12 02:14
7F:→ tropical72:再读的时候,把 EOF 给清掉. 180.177.73.222 04/12 02:14
8F:→ QQrzQQ:谢谢你们111.243.144.201 04/14 21:03