Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/FICN/src/misc/Tokenizer.h @ 676

Last change on this file since 676 was 676, checked in by landauf, 17 years ago
  • include guards
  • readded Light (maybe i'll remove it again, but at the moment i want it to stay)
File size: 1.1 KB
RevLine 
[676]1#ifndef _Tokenizer_H__
2#define _Tokenizer_H__
[507]3
4#include <string>
5#include <iostream>
6
7/**
[659]8 * String tokenizer
9 *
10 * Splits a given string into several smaller strings
11 * using a delmiter (default is the comma).
12 * Returns the result as a vector<string> object
13 *
14 * @author Nicolas Perrenoud<nicolape@ee.ethz.ch>
15 */
[507]16
17inline std::vector<std::string> tokenize(const std::string& str, const std::string& delimiters = ",")
18{
[612]19  std::vector<std::string> tokens;
[592]20
[507]21  // Skip delimiters at beginning.
22  std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
23  // Find first "non-delimiter".
24  std::string::size_type pos     = str.find_first_of(delimiters, lastPos);
25
26  while (std::string::npos != pos || std::string::npos != lastPos)
27  {
28      // Found a token, add it to the vector.
29      tokens.push_back(str.substr(lastPos, pos - lastPos));
30      // Skip delimiters.  Note the "not_of"
31      lastPos = str.find_first_not_of(delimiters, pos);
32      // Find next "non-delimiter"
33      pos = str.find_first_of(delimiters, lastPos);
[592]34  }
35  return tokens;
[507]36}
37
38
[676]39#endif /* _Tokenizer_H__ */
Note: See TracBrowser for help on using the repository browser.