2

ファイルの解析に問題があります

解析したいファイルの最後の 2 行は次のとおりです。

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

[何も、\n からの効果]

これは私がファイルを読む方法です:

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、行に何もない場合でも、前の行と同じコマンドになるようで、問題が発生しています。

これを確認する方法はありますか?はいの場合、どのように?

4

1 に答える 1

1

本当に答えではなく、コメントです(コメントの仕方がわかりません)。\n数字のある最後の行の後に2 がある場合eofはトリガーされません。私も似たような問題を使ってい.eof()たので、読み続けるかどうかの条件として、読んだものの内容を確認したほうがいいかもしれません。

于 2012-05-04T12:00:58.423 に答える