每周技巧 #36:新的 Join API
本节阅读量:本文翻译自 Abseil 官网的 Tip of the Week #36: New Join API。
原文最初作为 totw/36 发布于 2013 年 3 月 21 日。
作者:Greg Miller
更新于 2018 年 1 月 24 日。
“我很想加入一个俱乐部,然后用它敲你的头。”– Groucho Marx
你们很多人都希望有一个新的 join API,我们听到了。现在我们有了一个可以替代所有旧函数的 join 函数,它叫 absl::StrJoin()。你只需要给它一个要连接的对象集合和一个分隔符字符串,剩下的交给它即可。它可以处理 std::string、absl::string_view、int、double 等集合,也就是任何 absl::StrCat() 支持的类型。如果你需要连接一种不能直接 StrCat() 的类型,也可以为该类型提供自定义 Formatter;下面我们会看到,使用 Formatter 可以很漂亮地连接一个 map。
先看几个快速示例:
|
|
下面的例子传入一个 Formatter 参数,用不同的分隔符格式化 map 中的 pair。这会让输出清晰且易读。
|
|
你也可以把 C++ lambda 表达式作为 Formatter 传入。
|
|
更多细节请参考 absl/strings/str_join.h。
本节目录