Hi, i have some code that compares a string like ten times and accordinly to that string a type is returned:
But i wanted to make this code more flexible by using C++ maps. For example: a person adds a key like: "APPVER" in the map and the value will be a int APPVER (defined in a enum). So i came up with the following code:Code:Server::MessageTypes Server::getMessageType(const char* message) { int index = strcspn(message, " "); char* command = new char[index + 1]; strncpy(command, message, index); command[index] = '\0'; if (strcmp(command, "AUTH") == 0) { delete [] command; return AUTH; } else if (strcmp(command, "QUERY") == 0) { delete [] command; return QUERY; } else { delete [] command; return INVALID; } }
But i was a litlle afraid, since this function is called many times, of this map solution decreasing my performance. I wanted a suggestion...Code:void Server::addCommand(const char* command, int id) { map[command] = id; } Server::MessageTypes Server::getMessageType(const char* message) { int index = strcspn(message, " "); char* command = new char[index + 1]; strncpy(command, message, index); command[index] = '\0'; int value = map[command]; delete [] command; return value; }
Thank you.



CornedBee