我想對子字符串進行to_upper()
調用,從而傳入一個範圍。我不明白爲什麼我不能在string
上構建一個範圍,但可以用相同的方式在vector
上構建範圍。與std :: string一起使用make_iterator_range
使用的Xcode 6.3.2使用編譯器選項-std=c++11
和Boost 1.58
void string_test() {
std::string my_str = "Hello, world, it's a wonderful day";
std::vector<int> x = {1,2,3,4,5,6,6,8,9,10};
const auto rng = boost::make_iterator_range(x.begin(),x.end()-5);
const auto rng2 = boost::make_iterator_range(my_str.begin(),my_str.begin()+10);
// How do I get to_upper_copy to accept the range returned above
std::cout << boost::to_upper_copy(rng2) << std::endl;
}
我得到一個錯誤在Xcode:
/usr/local/Cellar/boost/1.58.0/include/boost/range/iterator_range_core.hpp:215:11: No matching constructor for initialization of 'std::__1::__wrap_iter<char *>'
'我不能在字符串上構建一個範圍'什麼阻止了你?當你嘗試時會發生什麼? –