你们中的许多人要求新的加入API,我们听到了。我们现在有一个连接函数来替换它们,它的拼写是absl::StrJoin()。只需给它一个要联接的对象集合和一个分隔符字符串,其余的就可以了。它将与std::stringabsl::string_viewintdouble-任何类型的absl::StrCat()支持。如果您需要加入一个不会strcat()的类型,您还可以为该类型提供一个自定义格式化程序;下面我们将看到如何使用格式化程序让我们很好地加入一个映射。

现在,举几个简单的例子:

std::vector<std::string> v = {"a", "b", "c"};
std::string s = absl::StrJoin(v, "-");
// s == "a-b-c"std::vector<absl::string_view> v = {"a", "b", "c"};
std::string s = absl::StrJoin(v.begin(), v.end(), "-");
// s == "a-b-c"std::vector<int> v = {1, 2, 3};
std::string s = absl::StrJoin(v, "-");
// s == "1-2-3"const int a[] = {1, 2, 3};
std::string s = absl::StrJoin(a, "-");
// s == "1-2-3"

下面的示例使用不同的分隔符传递格式化程序参数以格式化映射中的对。这使得输出变得美观和可读。

std::map<std::string, int> m = {{"a", 1}, {"b", 2}, {"c", 3}};
std::string s = absl::StrJoin(m, ";", absl::PairFormatter("="));
// s == "a=1;b=2;c=3"

还可以将C++ lambda表达式作为格式化程序传递。

std::vector<Foo> foos = GetFoos();std::string s = absl::StrJoin(foos, ", ", [](std::string* out, const Foo& foo) {absl::StrAppend(out, foo.ToString());
});

有关详细信息,请参阅absl/strings/str_join.h

Abseil之New Join API相关推荐

  1. java8 streams_当Java 8 Streams API不够用时

    java8 streams Java 8与往常一样是妥协和向后兼容的版本. JSR-335专家组可能尚未与某些读者就某些功能的范围或可行性达成一致的版本 . 请参阅Brian Goetz关于为什么-的 ...

  2. 当Java 8 Streams API不够用时

    Java 8与往常一样是妥协和向后兼容的版本. JSR-335专家组可能无法与某些读者就某些功能的范围或可行性达成一致的发行版. 请参阅Brian Goetz关于为什么-的一些具体解释. -Java ...

  3. API 资源隔离系统设计与实现

    (马蜂窝技术原创内容,公众号 ID:mfwtech) Part 1 背景 大交通业务需要对接机票.火车票.租车.接送机等业务的外部供应链,供应商的数据接口大部分通过 HTTP.HTTPS 等协议进行通 ...

  4. Spark你需要知道这些

    谈到 Spark,我们总是强调它比 Hadoop 更高效.为什么它可以更高效呢?是因为它优先使用内存存储?还是因为它拥有比 MapReduce 更简单高效的计算模型? 与 Hadoop 作业的区别 我 ...

  5. Jade —— 源于 Node.js 的 HTML 模板引擎

    2013-12-11 发布 Jade -- 源于 Node.js 的 HTML 模板引擎 开源项目介绍 web 模板引擎 node.js jade 207.8k 次阅读  ·  读完需要 69 分钟 ...

  6. JAVA5000行代码什么概念_GitHub - catstiger/mvc: 一个不超过5000行代码的,快速,简单,易用的MVC框架。...

    一个不超过5000行代码的,快速,简单,易用的MVC框架. 我们的目的是: 让MVC回归其最初的目的. 因简单而快速,超过目前各种主流MVC. 零侵入,零配置,易于测试,并且让开发者感觉不到MVC的存 ...

  7. js list操作_使用 Node.js 实现一个命令行 todo-list(1)- 基本功能

    功能介绍 为了熟悉 Node.js,使用 Node.js 制作一个命令行小工具,项目仓库:https://github.com/FuZhouJohn/node-todo,先来介绍一下功能: 添加任务: ...

  8. KafkaConsumer分析

    一 重要的字段 String clientId:Consumer唯一标识 ConsumerCoordinator coordinator: 控制Consumer与服务器端GroupCoordinato ...

  9. 最新剑指offer刷题笔记js(含新旧俩版所有题)

    目录 一.面试需要的知识() 二.高质量代码 三.解决面试题的思路 四.优化时间和空间效率 五.面试中的各项能力 一.面试需要的知识 数据结构.算法(查找.排序.递归.循环和位运算) 1.求平方根 思 ...

最新文章

  1. 部署教程 | ResNet原理+PyTorch复现+ONNX+TensorRT int8量化部署
  2. Kipmi0 占用100% CPU1核
  3. python中异常的姓名
  4. AI转型业绩哪家强?联想一季度营收853亿,净利11亿
  5. 223. Rectangle Area
  6. 逆向-002-iOS重签名
  7. 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
  8. php怎么写for循环,PHP for循环的写法和示例
  9. java 获取所有线程,Java 实例 - 获取所有线程
  10. 谈谈JavaScript中的数组、集合及效率
  11. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_《青岛大学-王卓-数据结构》B站学习...
  12. js/jQuery中的宽高
  13. 没有副业的人,太难了。。。
  14. 图解SM2算法流程(合)
  15. html5在线拍照 源码,html5拍照功能实现代码(htm5上传文件)
  16. iOS 名字按字母排序
  17. 中兴机顶盒网关服务器地址,中兴全球首发高清双向网关型DVB机顶盒
  18. 解决IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter
  19. word2vec理解及pytorch实现
  20. android 设备最大像素,最高2100万像素镜头 拍照强悍手机盘点

热门文章

  1. HDU 4111 Alice and Bob 【DP解决博弈】
  2. Builder和Factory模式区别
  3. PetShop 4.0知识点:加密和解密Web.config文件的配置节
  4. 为 NokiaQt SDK增加新的Sym“.NET研究”bian SDK开发平台
  5. 利用mergeAttributes设置name属性
  6. 排除某个类_Spark Troubleshooting(故障排除)
  7. 机器学习--聚类分析(划分方法,层次方法、密度方法)
  8. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》
  9. ifen.os x pe.dmg天翼云_3.3K屏显纵览天下 11代酷睿横行职场 华硕灵耀X纵横值得选择...
  10. php 阶乘函数,什么是PHP中的RECURSIVE函数?