我試圖通過boost::lexical_cast
子串(由一對迭代的表示)轉換爲整數:意外結果與升壓:: iterator_range的
#include <iostream>
#include <boost/lexical_cast.hpp>
int main()
{
// assume [first, last) as substring
const std::string s("80");
auto first = s.begin(), last = s.end();
std::cout << boost::lexical_cast<int>(boost::make_iterator_range(first, last)) << std::endl;
return 0;
}
輸出:(wandbox)
1
我得到了預期結果(80)的解決方法:boost::make_iterator_range(&*first, last - first)
。
問題:爲什麼上面的代碼不能按預期方式工作?而且,1
從哪裏來?
lexical_cast
不支持iterator_range<std::string::(const_)iterator>
濫用lexical_cast
lexical_cast
或iterator_range
- 錯誤或
iterator_range
- 一些其他原因
優秀的分析。 – sehe
很好的回答,謝謝! – kakkoko