- 论坛徽章:
- 0
|
5可用积分
bool find(string s,ifstream &f)
{
string str;
f.seekg(0,std::ios_base::beg);
while(getline(f,str))
{
cout << str << endl;
}
return false;
}
int main(int argc, char* argv[])
{
ifstream f("a.txt");
for(int i = 0;i < 100;++i){
cout << i << endl;
if(!find("s",f))
{
}
}
f.close();
return 0;
}
在linux下报错:Segmentation fault(coredump)
在.net下执行不报错,但实际上 f.seekg(0,std::ios_base::beg); 没起作用,不知道为什么?
[ 本帖最后由 richardzhang 于 2009-12-4 13:19 编辑 ] |
最佳答案
查看完整内容
楼主,试试在:f.seekg(0,std::ios_base::beg); 后面,加上:f.clear();-------- -------- -------- -------- -------- -------- -------- --------更新一下,上面说错了。应该在seekg之前,调用clear。如果流fail, seekg不会修改get position。所以需要在seekg之前,而不是之后,调用clear,清除failbit和badbit,才能使seekg工作。[ 本帖最后由 OwnWaterloo 于 2009-12-4 20:31 编辑 ]
|