为啥 seekg 不适用于 getline?

Posted

技术标签:

【中文标题】为啥 seekg 不适用于 getline?【英文标题】:Why seekg does not work with getline?为什么 seekg 不适用于 getline? 【发布时间】:2013-03-21 04:16:36 【问题描述】:

当我在 myFile 中到达 EOF 时,Seekg 似乎不起作用。

ifstream myFile("/path/file");
for(int i; i < 10; i++)
    myFile.seekg(0);//reset position in myFile
    while(getline(myFile, line))
        doSomething
    

所以,现在我每个循环都打开输入流:

for(int i; i < 10; i++)
    ifstream myFile("/path/file");//reset position in myFile
    while(getline(myFile, line))
        doSomething
    

但我宁愿寻求位置 0。我怎样才能做到这一点?

【问题讨论】:

seekg() function fails 的可能重复项 【参考方案1】:

确保在调用myFile.seekg()之前清除错误标志:

myFile.clear();

设置 EOF 标志后,您将无法提取任何内容。您必须清除这些标志才能再次提取。

【讨论】:

以上是关于为啥 seekg 不适用于 getline?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 CORS 似乎不适用于 POST?

我的突变适用于 Amplify,但不适用于 Apollo。为啥?

为啥 Laravel 中间件适用于单个路由而不适用于一组路由

运行C++程序报错:Segmentation fault(coredump) 请问为啥?

C++的面向行的输入:getline()与get()

C++的面向行的输入:getline()与get()