diff --git a/src/lib/base/String.cpp b/src/lib/base/String.cpp index 99a2bb43..cbaae56b 100644 --- a/src/lib/base/String.cpp +++ b/src/lib/base/String.cpp @@ -224,6 +224,26 @@ stringToSizeType(String string) return value; } +std::vector +splitString(String string, const char c) +{ + std::vector results; + + size_t head = 0; + size_t separator = string.find(c); + while (separator != String::npos) { + results.push_back(string.substr(head, separator - head)); + head = separator + 1; + separator = string.find(c, head); + } + + if (head < string.size()) { + results.push_back(string.substr(head, string.size() - head)); + } + + return results; +} + // // CaselessCmp // diff --git a/src/lib/base/String.h b/src/lib/base/String.h index de34ad0a..df4307a6 100644 --- a/src/lib/base/String.h +++ b/src/lib/base/String.h @@ -22,6 +22,7 @@ #include "common/stdstring.h" #include +#include // use standard C++ string class for our string class typedef std::string String; @@ -100,6 +101,12 @@ Convert an a \c string to an size type */ size_t stringToSizeType(String string); +//! Split a string into substrings +/*! +Split a \c string that separated by a \c c into substrings +*/ +std::vector splitString(String string, const char c); + //! Case-insensitive comparisons /*! This class provides case-insensitve comparison functions.