ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/gclib/tophat_cpp/tokenize.cpp
Revision: 29
Committed: Tue Aug 2 21:24:54 2011 UTC (13 years, 1 month ago) by gpertea
File size: 1223 byte(s)
Log Message:
adding tophat source work

Line File contents
1 #ifdef HAVE_CONFIG_H
2 #include <config.h>
3 #endif
4
5 #include <string>
6 #include <vector>
7 #include <cassert>
8
9 using namespace std;
10
11 /**
12 * Split string s according to given delimiters. Mostly borrowed
13 * from C++ Programming HOWTO 7.3.
14 */
15 void tokenize(const string& s, const string& delims, vector<string>& ss) {
16 string::size_type lastPos = s.find_first_not_of(delims, 0);
17 string::size_type pos = s.find_first_of(delims, lastPos);
18 while (string::npos != pos || string::npos != lastPos) {
19 ss.push_back(s.substr(lastPos, pos - lastPos));
20 lastPos = s.find_first_not_of(delims, pos);
21 pos = s.find_first_of(delims, lastPos);
22 }
23 }
24
25 /**
26 * Split string s according to given delimiters. If two delimiters occur in
27 * succession, sticks an empty string token at that position in ss
28 */
29 void tokenize_strict(const string& s, const string& delims, vector<string>& ss) {
30 string::size_type lastPos = s.find_first_not_of(delims, 0);
31 string::size_type pos = s.find_first_of(delims, lastPos);
32 while (lastPos < s.length() || pos < s.length()) {
33 ss.push_back(s.substr(lastPos, pos - lastPos));
34 if (pos == string::npos)
35 break;
36 lastPos = pos + 1;
37 pos = s.find_first_of(delims, lastPos);
38 }
39 }