嗨,我有一些代碼,我正在寫一個.obj模型解析器的麻煩。 下面是造成問題的代碼:錯誤,當使用std :: copy
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.0 00000 1.000000
最後,我使用std ::副本,並從字符串內獲取每個組數字:
頂點[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錯誤?任何幫助將不勝感激!
std :: back_inserter可以從參數中推導出類型。 – ForEveR 2012-08-02 04:39:06
你爲什麼不只是寫'的std :: back_inserter(model.chunks.back()。vectices)',讓編譯器推斷出類型參數? – Nawaz 2012-08-02 04:59:22
嗯..沒有想到這一點。它也需要更少的代碼。謝謝你的提示! – luveti 2012-08-02 05:05:39