//this one works some of the time char * IRCSocket::GetToken(const char *pString,uint32 TokenID) { string pToken= pString; //char * pToken = (char*)pTemp.c_str(); strtok((char*)pToken.c_str()," "); TokenID--; for (;TokenID > 0;TokenID--) { pToken = strtok(NULL," "); } return (char*)pToken.c_str(); } //this one doesn't work at all. (crash) char * IRCSocket::GetToken(const char *pString,uint32 TokenID) { //return (char*)pString; string pToken = pString; string::size_type StartPos = pToken.find(" ",(TokenID-1)); string::size_type EndPos = pToken.find(" ",TokenID); string Token = pToken.substr(StartPos, (StartPos-EndPos)); return (char*)Token.c_str(); }