Since C++23(or use range-v3 library), we can join a range of ranges with a delimiter like:
std::vector<std::string> v{ "This", "is", "it" };
std::string result = v | std::views::join_with(' ') | std::ranges::to<std::string>();
// result is "This is it".
But what if I need a delimiter string instead of a delimiter character, e.g. double spaces? How can I do so by ranges?
view::join_withalready accepts a range as a delimiter, so change it:It should be noted that after P2281, range adaptor objects hold decayed arguments by value, so you cannot use the raw string literal
" "as a delimiter because it decays to aconst char*, which is not a range.