嘿伙计们我正在为一些.obj模型解析器编写的代码遇到问题。 以下是导致问题的代码:
std::istringstream iss(line.substr(1));
std::copy(
std::istream_iterator<float>(iss),
std::istream_iterator<float>(),
std::back_inserter<std::vector<float>>(model.chunks.back().vectices)
);
它基本上将一个字符串作为参数传递,如下所示:
v -5.000000 -1.000000 1.000000
然后从中获取子串,所以只剩下这个:
-5.000000 -1.000000 1.000000
最后我使用std :: copy并从字符串中获取每组数字:
顶点[0] = -5.000000
顶点[1] = -1.000000
顶点[2] = 1.000000
无论如何,这里的主要问题是我从这行代码中得到错误:
std::back_inserter<std::vector<float>>(model.chunks.back().vectices));
它说“预期令牌”;'得到浮动“我的代码仍然编译并运行完美无瑕。
虽然如果我用std :: string替换该代码中的浮点数,我就不会再出现错误了。
std::copy(
std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>(),
std::back_inserter<std::vector<std::string>>(model.chunks.back().vectices)
);
我正在使用Qt Creator,所以这可能只是一个IDE错误?任何帮助将不胜感激!
答案 0 :(得分:4)
可能是您的IDE无法理解模板规范中的>>
。较旧版本的C ++标准要求您在>
中的每个> >
之间放置一个空格,否则可能会与右移运算符>>
混淆。所以:
std::back_inserter<std::vector<float> >(model.chunks.back().vectices));