Хороший пример для 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"

7
Этот ответ требует меньших усилий, чем предыдущий, и не дает никакой дополнительной ценности. Почему он все еще здесь?
arekolek 05
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.