【问题标题】:A good example for boost::algorithm::joinboost::algorithm::join 的一个很好的例子
【发布时间】:2010-12-22 10:49:48
【问题描述】:

我最近想使用 boost::algorithm::join ,但我找不到任何使用示例,我不想花很多时间学习 Boost Range 库只是为了使用这个功能。

谁能提供一个很好的例子来说明如何在字符串容器上使用连接?谢谢。

【问题讨论】:

  • 在查找 boost 库“foo”的示例时,查看 boost/libs/foo/examples 和 boost/libs/foo/test 通常是个好主意。在本例中,您可以查看 boost/libs/algorithm/string/test/join_test.cpp

标签: c++ string boost join


【解决方案1】:
#include <boost/algorithm/string/join.hpp>
#include <vector>
#include <iostream>

int main()
{
    std::vector<std::string> list;
    list.push_back("Hello");
    list.push_back("World!");

    std::string joined = boost::algorithm::join(list, ", ");
    std::cout << joined << std::endl;
}

输出:

Hello, World!

【讨论】:

  • 可以支持自定义类型吗?例如,A 类有一个方法ToString,它返回一个string 值。我可以通过在每个元素上调用ToString 来使用join 加入vector&lt;A&gt; 吗?
  • @KenZhang:不,因为这是一个相当专业的实现。通常的 STL 风格是使用迭代器对,然后您可以使用 boost::transform_iterator 包装 .ToString 方法。但是这个join 方法需要一个容器而不是一个迭代器对。
【解决方案2】:
std::vector<std::string> MyStrings;
MyStrings.push_back("Hello");
MyStrings.push_back("World");
std::string result = boost::algorithm::join(MyStrings, ",");

std::cout << result; // prints "Hello,World"

【讨论】:

  • 这个答案显示出比旧答案更少的努力,并且没有提供任何附加值。为什么它还在这里?
猜你喜欢
  • 2013-10-25
  • 2012-06-27
  • 2015-10-30
  • 1970-01-01
  • 2014-12-16
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
相关资源
最近更新 更多