C++中如何通过Ranges使用多字符分隔符实现元素拼接?
使用C++23 Ranges用字符串分隔符拼接容器
在C++23(或range-v3库)中,std::views::join_with本身就支持字符串作为分隔符,不需要额外复杂操作——它的参数可以是任意可复制的范围类型,不止单个字符。
直接将分隔符替换为字符串字面量或std::string即可,比如用双空格作为分隔符:
#include <vector> #include <string> #include <ranges> int main() { std::vector<std::string> v{ "This", "is", "it" }; // 使用双空格字符串作为分隔符 std::string result = v | std::views::join_with(" ") | std::ranges::to<std::string>(); // result 是 "This is it" }
补充说明
- 如果你的分隔符是动态生成的
std::string,同样可以直接传入:std::string delimiter = " "; std::string result = v | std::views::join_with(delimiter) | std::ranges::to<std::string>(); - range-v3库的用法完全一致,只需要把命名空间换成
ranges::views::join_with和ranges::to<std::string>即可。
内容的提问来源于stack exchange,提问作者o_oTurtle
相关产品推荐
相关产品推荐

