首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::fstream错误

std::fstream错误
EN

Stack Overflow用户
提问于 2012-05-04 11:31:22
回答 1查看 155关注 0票数 2

我在解析一个文件时遇到了一些困难

我要解析的文件的最后两行是:

f 814/866/896 1035/1100/989 817/965/898

什么也没有\n

我就是这样读取文件的:

代码语言:javascript
复制
while(!inFile.eof())
{
    inFile>>sCommand;

    if(sCommand == L"#") 
    {}
    else if(sCommand == L"f")
    {
        int iPos, iTex, iNorm;
        iPos=iTex=iNorm = -1;

        for(auto face=0; face<3; ++face)
        {
            inFile>>iPos;
            --iPos;
            if(inFile.peek() == L'/')
            {
                inFile.ignore();
                inFile>>iTex;
                --iTex;
                if(inFile.peek() == L'/')
                {
                    inFile.ignore();
                    inFile>>iNorm;
                    --iNorm;
                }
            }

            objVertexIndex iObj;
            iObj.iPos=iPos;
            iObj.iTex=iTex;
            iObj.iNorm=iNorm;
            this->AddVertex(iObj);
        }
        m_MaterialIndices_C.push_back(m_CurrentMaterial);
    } //END IF

    inFile.ignore( 1000, '\n' );
} //END WHILE
inFile.close();

但是,文件的最后一行不包含任何内容,我遇到了一些问题。在文件的最后一行之前,将发生inFile.ignore( 1000, '\n' );,我希望检测到std::fstream::eof(),但出于某种原因,它没有被检测到。显然,如果一行中没有任何内容,那么sCommand仍然是前一行的命令,这给我带来了一些麻烦。

有办法查一下这个吗?如果是,怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-04 12:00:58

不是回答,而是评论(我不知道该怎么评论)。如果在最后一行之后有2 \n和数字,eof将不会触发。我在使用.eof()时遇到了类似的问题,也许最好检查一下您所阅读内容的内容,作为保持阅读的条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10447986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档