summaryrefslogtreecommitdiff
path: root/include/stdalgo.h
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2018-07-26 21:23:45 +0100
committerPeter Powell <petpow@saberuk.com>2018-07-26 21:41:36 +0100
commit9cf448a332799a138dad0acb5b2878535770571d (patch)
tree4d922164f102e1dbf98aa3261e77da305664f532 /include/stdalgo.h
parent384ef31bc01e4a1a2e59d082c9066002410ba54a (diff)
Replace irc::stringjoiner with a generic stdalgo::string::join.
This can also be used with different types of collection containing values which are not a string.
Diffstat (limited to 'include/stdalgo.h')
-rw-r--r--include/stdalgo.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/stdalgo.h b/include/stdalgo.h
index f4465963a..bb5e12262 100644
--- a/include/stdalgo.h
+++ b/include/stdalgo.h
@@ -95,6 +95,25 @@ namespace stdalgo
return (!strcasecmp(tocstr(str1), tocstr(str2)));
}
+ /** Joins the contents of a vector to a string.
+ * @param sequence Zero or more items to join.
+ * @param separator The character to place between the items, defaults to ' ' (space).
+ * @return The joined string.
+ */
+ template<typename Collection>
+ inline std::string join(const Collection& sequence, char separator = ' ')
+ {
+ std::string joined;
+ if (sequence.empty())
+ return joined;
+
+ for (typename Collection::const_iterator iter = sequence.begin(); iter != sequence.end(); ++iter)
+ joined.append(ConvToStr(*iter)).push_back(separator);
+
+ joined.erase(joined.end() - 1);
+ return joined;
+ }
+
/** Replace first occurrence of a substring ('target') in a string ('str') with another string ('replacement').
* @param str String to perform replacement in
* @param target String to replace