我正在编写简单的 OBJ 加载器,但遇到了下一个问题 - 我必须从下一个中提取整数std::string
:
f v0/vt0/vn0 v1/vt1/vn0 ... vk/vtk/vnk
其中vk
, vtk
,vnk
是 int 值,并且值之间没有空格/
,组之间只有一个空格。
由于文件可能非常大,并且这种类型的行可能出现超过 100000 次,我需要一种有效的方法来从像这样的字符串中提取整数。
编辑:
正如 Jesse 所问,这是我目前的方法(我假设数据格式正确!):
int p, t, n;
const char* l = line.c_str() + 2;
for (int vIndex = 0; l && sscanf(l, "%d/%d/%d", &p, &t, &n) == 3; ++vIndex)
{
//do something with vertex
l = strchr(l, ' ');
if (l)
{
l += 1;
}
}