如何在C++中用范围连接多个分隔符?

oug3syen  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(83)

从C++23(或使用range-v3库)开始,我们可以用一个分隔符连接一个范围:

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".

字符串
但是如果我需要一个分隔符字符串而不是一个分隔符字符,例如双空格?我怎么能这样做的范围?

dsf9zpds

dsf9zpds1#

view::join_withalready 接受一个范围作为分隔符,因此更改它:

std::vector<std::string> v{ "This", "is", "it" };
auto result = v | std::views::join_with(std::string("     "))
                | std::ranges::to<std::string>();

字符串
应该注意的是,在P2281之后,range adapter对象保存 by value 衰减的参数,所以你 * 不能 * 使用原始字符串文字" "作为分隔符,因为它衰减为const char*,这不是一个范围。

相关问题