summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2014-10-11 12:55:57 +0200
committerAndreas Baumann <mail@andreasbaumann.cc>2014-10-11 12:55:57 +0200
commitdef669f31e10c8192a16f6f6ebdf1ccd420b5fe5 (patch)
treed7506dc67235bd8245aad670f64d017b761aa05c /src
parentc5351f58bcf494a56ecfd17fe5e68eb3b17dac7d (diff)
downloadcrawler-def669f31e10c8192a16f6f6ebdf1ccd420b5fe5.tar.gz
crawler-def669f31e10c8192a16f6f6ebdf1ccd420b5fe5.tar.bz2
added a string splitting function (strtok-like)
Diffstat (limited to 'src')
-rw-r--r--src/libutil/StringUtils.cpp24
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;
+}