我需要在所有空格处分割一个 std::string
。然而,结果范围应该将其元素转换为 std::string_view
。我正在处理范围的“元素类型”。我猜想,该类型类似于 c_str
。如何将“分割”部分转换为 string_view
?
#include <string>
#include <string_view>
#include "range/v3/all.hpp"
int main()
{
std::string s = "this should be split into string_views";
auto view = s
| ranges::view::split(' ')
| ranges::view::transform(std::string_view);
}
split
并不会“返回”一个字符范围,它返回的是一个范围的范围,因此每个rng
本身都是一个范围,对应于s
中的一个单词(一对迭代器到s
),这就是为什么我可以从中构造一个std::string_view
。 - Holtreturn std::string_view(&*rng.begin(), ranges::distance(rng));
可以简化为return std::string_view(r);
。 - 康桓瑋