#include struct IRCName{ char *username, *hostname, *host; }; IRCName* parseIRCName(char *full); int main(){ IRCName *user; char *string = "bananafly!~uejcpo@81-229-120-21-no28.tcbn.telia.com"; for(int i=0;i<1000000;i++){ user = parseIRCName(string); delete user->hostname; delete user->username; delete user->host; delete user; } std::cout << "Done!"; std::cin.get(); return 0; } IRCName* parseIRCName(char *full){ IRCName *ret; ret = new IRCName; char *p, *tmp; int *len; tmp = new char[255]; for(p=full;*p != '!';p++) tmp[p-full] = *p; tmp[p-full] = '\0'; len = new int; *len = strlen(tmp); ret->username = new char[*len]; strcpy(ret->username, tmp); delete tmp; tmp = new char[255]; for(p++;*p != '@';p++) tmp[p-full-*len-1] = *p; tmp[p-full-*len-1] = '\0'; ret->hostname = new char[strlen(tmp)]; strcpy(ret->hostname, tmp); delete tmp; delete len; p++; ret->host = new char[strlen(p)]; strcpy(ret->host, p); return ret; }