iipsrv  0.9.9
Tokenizer.h
1 /*
2  Simple String Tokenizer Class
3 
4  Copyright (C) 2000-2001 Ruven Pillay.
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20 
21 
22 #ifndef _TOKENIZER_H
23 #define _TOKENIZER_H
24 
25 #include <string>
26 
27 
29 
30 class Tokenizer{
31 
32  private:
33  std::string arg;
34  std::string delim;
35  std::string _nextToken();
36 
37  public:
38 
40 
43  Tokenizer( const std::string& s, const std::string& d );
44 
46  std::string nextToken();
47 
49  int hasMoreTokens();
50 
51 };
52 
53 
54 
55 inline Tokenizer::Tokenizer( const std::string& s, const std::string& t )
56 {
57  arg = s;
58  delim = t;
59 }
60 
61 
62 
63 inline std::string Tokenizer::_nextToken()
64 {
65  int n;
66  std::string result;
67 
68  n = arg.find( delim );
69 
70  // No token in string, so return original
71  if( n < 0 ){
72  result = arg;
73  arg = std::string();
74  }
75  else{
76  result = arg.substr( 0, n );
77  arg = arg.substr( n + delim.length(), arg.length() );
78  }
79 
80  return result;
81 }
82 
83 
84 
85 inline std::string Tokenizer::nextToken()
86 {
87  std::string result;
88  do{
89  result = _nextToken();
90  }
91  while( result.empty() && !arg.empty() );
92 
93  return result;
94 
95 }
96 
97 
99 {
100  int n = arg.find_first_not_of( delim, 0 );
101  if( n >= 0 ) return 1;
102  else return 0;
103 }
104 
105 
106 
107 #endif
Tokenizer(const std::string &s, const std::string &d)
Constructor.
Definition: Tokenizer.h:55
Simple utility class to split a string into tokens.
Definition: Tokenizer.h:30
int hasMoreTokens()
Indicate whether there are any tokens remaining.
Definition: Tokenizer.h:98
std::string nextToken()
Return the next token.
Definition: Tokenizer.h:85