如何将字符串向量内爆成字符串(优雅的方式)

新手上路,请多包涵

我正在寻找将字符串向量内爆为字符串的最优雅方法。以下是我现在使用的解决方案:

 static std::string& implode(const std::vector<std::string>& elems, char delim, std::string& s)
{
    for (std::vector<std::string>::const_iterator ii = elems.begin(); ii != elems.end(); ++ii)
    {
        s += (*ii);
        if ( ii + 1 != elems.end() ) {
            s += delim;
        }
    }

    return s;
}

static std::string implode(const std::vector<std::string>& elems, char delim)
{
    std::string s;
    return implode(elems, delim, s);
}

还有其他人吗?

原文由 ezpresso 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 518
1 个回答

如果您已经在使用 C++ 基础库(用于常用工具),则通常包含字符串处理功能。除了上面提到的 Boost, Abseil 还提供

 std::vector<std::string> names {"Linus", "Dennis", "Ken"};
std::cout << absl::StrJoin(names, ", ") << std::endl;

愚蠢提供

 std::vector<std::string> names {"Linus", "Dennis", "Ken"};
std::cout << folly::join(", ", names) << std::endl;

两者都给出字符串 "Linus, Dennis, Ken"

原文由 Franklin Yu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题