Хороший пример для boost :: algorithm :: join

116

Недавно я хотел использовать boost :: algorithm :: join, но я не смог найти никаких примеров использования, и я не хотел тратить много времени на изучение библиотеки Boost Range только для того, чтобы использовать эту единственную функцию.

Может ли кто-нибудь предоставить хороший пример использования соединения в контейнере строк? Спасибо.

Дэн Хук
источник
30
При поиске примеров для библиотеки boost "foo" часто бывает полезно посмотреть на boost / libs / foo / examples и boost / libs / foo / test. В данном случае вы можете посмотреть на boost / libs / algorithm / string / test / join_test.cpp
Эрик

Ответы:

224
#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!
Тристрам Гребенер
источник
4
Может ли он поддерживать пользовательские типы? Например, у класса Aесть метод, ToStringкоторый возвращает значение. stringМогу ли я использовать его joinдля присоединения vector<A>, вызывая ToStringкаждый элемент?
Ken Zhang
43
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"
KeatsPeeks
источник
7
Этот ответ требует меньших усилий, чем предыдущий, и не дает никакой дополнительной ценности. Почему он все еще здесь?
arekolek 05