diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libutil/StringUtils.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/libutil/StringUtils.cpp b/src/libutil/StringUtils.cpp index 61769c9..13be8d4 100644 --- a/src/libutil/StringUtils.cpp +++ b/src/libutil/StringUtils.cpp @@ -21,3 +21,27 @@ bool stringicasecmp( const string &s1, const string &s2 ) return false; } +std::vector<std::string> split( const string &s, const string &delimiter, bool keepEmpty ) +{ + vector<string> result; + + if( delimiter.empty( ) ) { + result.push_back( s ); + return result; + } + + string::const_iterator b = s.begin( ), e; + while( true ) { + e = search( b, s.end( ), delimiter.begin( ), delimiter.end( ) ); + string tmp( b, e ); + if( keepEmpty || !tmp.empty( ) ) { + result.push_back( tmp ); + } + if( e == s.end( ) ) { + break; + } + b = e + delimiter.size( ); + } + + return result; +} |