Ecco un semplice esempio di implementazione:
#include <string>
#include <vector>
#include <sstream>
#include <utility>
std::vector<std::string> explode(std::string const & s, char delim)
{
std::vector<std::string> result;
std::istringstream iss(s);
for (std::string token; std::getline(iss, token, delim);)
{
result.push_back(std::move(token));
}
return result;
}
Usage:
auto v = explode("hello world foo bar", ' ');
Nota: @ idea di Jerry di scrivere a un iteratore di uscita è più idiomatico per C++. In effetti, puoi fornire entrambi; un modello di output-iterator e un wrapper che produce un vettore, per la massima flessibilità.
Nota 2: se si desidera ignorare token vuoti, aggiungere if (!token.empty())
.
fonte
2012-10-19 03:36:30
No, ma è abbastanza facile scrivere la propria implementazione. –
'boost :: split' da [boost/algorithm/string.hpp] (www.boost.org/doc/html/string_algo.html) – Praetorian
@KerrekSB Penso che dovresti fare una risposta prima che questo sia chiuso –