Um bom exemplo para boost :: algorithm :: join

116

Recentemente, quis usar boost :: algorithm :: join, mas não consegui encontrar nenhum exemplo de uso e não queria investir muito tempo aprendendo a biblioteca Boost Range apenas para usar essa função.

Alguém pode fornecer um bom exemplo de como usar join em um contêiner de strings? Obrigado.

Dan Hook
fonte
30
Ao procurar exemplos para a biblioteca boost "foo", geralmente é uma boa idéia olhar para boost / libs / foo / examples e boost / libs / foo / test. No caso presente, você pode olhar para boost / libs / algorithm / string / test / join_test.cpp
Éric Malenfant

Respostas:

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;
}

Resultado:

Hello, World!
Tristram Gräbener
fonte
4
Ele pode suportar tipos personalizados? Por exemplo, a classe Atem um método ToStringque retorna um stringvalor. Posso usar joinpara ingressar em um vector<A>chamando ToStringem cada elemento?
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
fonte
7
Esta resposta mostra menos esforço do que a anterior e não oferece valor agregado. Por que ainda está presente aqui?
arekolek