diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2014-10-11 12:55:57 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2014-10-11 12:55:57 +0200 |
commit | def669f31e10c8192a16f6f6ebdf1ccd420b5fe5 (patch) | |
tree | d7506dc67235bd8245aad670f64d017b761aa05c /src | |
parent | c5351f58bcf494a56ecfd17fe5e68eb3b17dac7d (diff) | |
download | crawler-def669f31e10c8192a16f6f6ebdf1ccd420b5fe5.tar.gz crawler-def669f31e10c8192a16f6f6ebdf1ccd420b5fe5.tar.bz2 |
added a string splitting function (strtok-like)
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; +} |