0

嘿伙计们,我在为 .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));

它说“预期的令牌';' got float" 我的代码仍然可以完美地编译和运行。

尽管如果我用 std::string's 替换该代码中的浮点数,我就不会再收到错误了。

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 错误吗?任何帮助将不胜感激!

4

1 回答 1

4

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

std::back_inserter<std::vector<float> >(model.chunks.back().vectices));
于 2012-08-02T04:39:30.930 回答