What I'm trying to do is pass a string from my derived class to my base class. A function called nextToken() should return a String object up to the delimiter(in this case ':').
This string
dunc0035:!:5701:500::/shome/dunc0035:/bin/ksh
Should be displayed as
dunc0035 ! 5701:500 /shome/dunc0035 /bin/ksh
When I run my program it display some of the right info..and some garbage....
This is the code I have....Any help would be great...thanksCode:class String { protected: enum { SZ = 100 }; char str[SZ]; public: String () { str[0] = '\0'; } String (char s[] ) { strcpy(str, s); } void display() const { cout << str; } operator char*() { return str; } }; class StringTokenizer : public String { protected: int i; char colon; public: StringTokenizer(char obj[], char cn ) : i(0), colon(cn) { strcpy(str,obj); } int countToken(char obj[], char colon) { int len = strlen(obj); i++; for(int n =0; n< len; n++) { if(obj[n] == colon) i++; } return i; } bool hasMoreTokens () { int length = strlen(str); return (i < length) ? true : false; } String nextToken() { int a = strlen(str); char temp[80]; int j=0; while(str[i] != colon) { temp[j]=str[i]; j++; i++; } i++; return String(temp); } }; int main() { String s; s= "dunc0035:!:5701:500::/shome/dunc0035:/bin/ksh"; StringTokenizer tokens(s, ':'); while ( tokens.hasMoreTokens() ) { tokens.nextToken(); String token = tokens.nextToken(); cout << static_cast<char*>(token); cout<< endl; } return 0; }