我在解析一个文件时遇到了一些困难
我要解析的文件的最后两行是:
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仍然是前一行的命令,这给我带来了一些麻烦。
有办法查一下这个吗?如果是,怎么做?
发布于 2012-05-04 12:00:58
不是回答,而是评论(我不知道该怎么评论)。如果在最后一行之后有2 \n和数字,eof将不会触发。我在使用.eof()时遇到了类似的问题,也许最好检查一下您所阅读内容的内容,作为保持阅读的条件。
https://stackoverflow.com/questions/10447986
复制相似问题