- 論壇徽章:
- 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下執(zhí)行不報錯,但實際上 f.seekg(0,std::ios_base::beg); 沒起作用,不知道為什么?
[ 本帖最后由 richardzhang 于 2009-12-4 13:19 編輯 ] |
最佳答案
查看完整內(nèi)容
樓主,試試在:f.seekg(0,std::ios_base::beg); 后面,加上:f.clear();-------- -------- -------- -------- -------- -------- -------- --------更新一下,上面說錯了。應(yīng)該在seekg之前,調(diào)用clear。如果流fail, seekg不會修改get position。所以需要在seekg之前,而不是之后,調(diào)用clear,清除failbit和badbit,才能使seekg工作。[ 本帖最后由 OwnWaterloo 于 2009-12-4 20:31 編輯 ]
|