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を使用して、文字列内から数値の各セットを取得します。

vertices [0] = -5.000000
vertices [1] = -1.000000
vertices [2] = 1.000000

とにかく、ここでの主な問題は、次のコード行からエラーが発生することです。

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

「期待されるトークン」と書かれています。フロートになりました」私のコードはまだコンパイルされ、完璧に実行されます。

そのコードのfloatを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エラーである可能性がありますか?どんな助けでも大歓迎です!

4

1 に答える 1

4

>>IDEがテンプレート仕様のを理解していない可能性があります。古いバージョンのC++標準では、のようにそれぞれの間にスペースを入れる必要があり>ました> >。そうしないと、右シフト演算子と混同される可能性があります>>。それで:

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