我试图用C ++读取obj文件的内容,我正在努力解决它。自从我用C ++做了很多事情以来已经有几年了,所以我已经忘记了很多,但我对Java更加精通。
我正在尝试读取包含此内容的obj文件
# This file uses centimeters as units for non-parametric coordinates.
mtllib crayon.mtl
g default
v 0.927930 -17.363054 -0.279038
...
vt 0.648603 0.107966
... etc
但是,它似乎无法读取第一行。这是我到目前为止的代码:
void TextureMapper::read_file(string file_name)
{
ifstream file;
file.open(file_name);
if (file.is_open())
{
string line;
while (getline(file, line))
{
std::stringstream ss(line);
string token;
ss >> token;
switch (get_obj_type(token))
{
case GEOMETRIC_VERTEX:
break;
case TEXTURE_VERTEX:
break;
case VERTEX_NORMAL:
break;
case GROUP_NAME:
break;
case SMOOTHING_GROUP:
break;
case FACE:
break;
case MATERIAL_NAME:
break;
case MATERIAL_LIBRARY:
break;
case COMMENT:
break;
case BLANK:
break;
}
}
file.close();
}
else
std::cerr << "Couldn't open " << file_name << " for reading\n";
}
枚举(GEOMETRIC_VERTEX
,GROUP_NAME
等)映射到obj文件的部分(例如v
,g
vt
,{ {1}}等。)
编辑我意识到我的文件中的空白行可能会导致异常,所以我为此添加了#
,并将其作为enum
添加到我的{ {1}}声明,现在我没有得到异常,但它从未读过第一行。
第一行(case
)被正确读入,我可以在调试时看到它。但是,当它再次重新进入switch
循环时,看起来它会一次又一次地重读同一行。
当我读到这个文件时,我不确定我做错了什么。如果您需要更多信息,请与我们联系。