使用std :: copy时出错

时间:2012-08-02 04:37:00

标签: c++ std

嘿伙计们我正在为一些.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错误?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

可能是您的IDE无法理解模板规范中的>>。较旧版本的C ++标准要求您在>中的每个> >之间放置一个空格,否则可能会与右移运算符>>混淆。所以:

std::back_inserter<std::vector<float> >(model.chunks.back().vectices));