Hey,
Last year I was working in Java, and one of the predefined classes we used was the stringTokenizer.java class. I wanted to use this in C++, but couldn't find a predefined class. So I made my own class - here's the code:
- #include <iostream>
-
#include <string>
-
using namespace std;
-
-
class stringTokenizer {
-
public:
-
void setMessage(string newMessage);
-
string next();
-
bool hasNext();
-
stringTokenizer(string myMes, char myCh, bool retDel);
-
stringTokenizer(string myMes, char myCh);
-
stringTokenizer(string myMes);
-
-
private:
-
void processBlanks();
-
string message;
-
char ch;
-
bool delRet;
-
};
-
-
stringTokenizer::stringTokenizer(string myMes, char myCh, bool retDel) {
-
message = myMes;
-
ch = myCh;
-
delRet = retDel;
-
}
-
-
stringTokenizer::stringTokenizer(string myMes, char myCh) {
-
message = myMes;
-
ch = myCh;
-
delRet = false;
-
}
-
-
stringTokenizer::stringTokenizer(string myMes) {
-
message = myMes;
-
ch = ' ';
-
delRet = false;
-
}
-
-
void stringTokenizer::setMessage(string newMessage) {
-
message = newMessage;
-
}
-
-
string stringTokenizer::next() {
-
string word;
-
if (!delRet) {
-
processBlanks();
-
int pos = message.find(ch);
-
if (pos != string::npos) {
-
word = message.substr(0, pos);
-
message = message.substr(pos);
-
} else {
-
word = message;
-
message = "";
-
}
-
} else {
-
if (message[0] == ch) {
-
word = message.substr(0, 1);
-
message = message.substr(1);
-
} else {
-
int pos = message.find(ch);
-
if (pos != string::npos) {
-
word = message.substr(0, pos);
-
message = message.substr(pos);
-
} else {
-
word = message;
-
message = "";
-
}
-
}
-
}
-
return word;
-
}
-
-
bool stringTokenizer::hasNext() {
-
return message.length() > 0;
-
}
-
-
void stringTokenizer::processBlanks() {
-
while (message.length() > 0 && message[0] == ch)
-
message = message.substr(1);
-
return;
-
}
My question is, for any Java/C++ users out there, is there anything I can improve to make this as identical as possible in implementation as the Java class? I have looked at the Java summary of the stringTokenizer class at http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html
Thanks for any help.