I want to assign a char pointer value to enmerated value, to use in a switch statement.
Given below is the code segment. I dont hv an idea how to convert and assign char pointer value to a enumerated value. Pls can someone help me to resolve this

enum IncomingTCPCommand
		HEARTBEAT	=0x0000,
		PUBLISH		=0x0001,
		RETRIEVE	                =0x0002,
		SETSTATUS	=0x0003,
		GETCOUNT_V1	=0x0004,
char * p_chArrayMessage;
char * m_p_chCommandName ;
string p_szMessage = "0x0000,set";// input string
p_chArrayMessage = new char [p_szMessage.size()+1];//copy into a char array
strcpy (p_chArrayMessage, p_szMessage.c_str());
m_p_chCommandName = strtok(p_chArrayMessage, ",");get the first token

//problem starts from here
enum IncomingTCPCommand TCPCommand = m_p_chCommandName;	
	m_iCommandID = (int)TCPCommand;
		case HEARTBEAT:					
		//TODO								case PUBLISH:

STL to the rescue.

#include <algorithm>
#include <cctype>  // since you are using char*


bool str_eq_ci( const char* a, const char* b )
  for (; *a && *b; a++, b++)
    if (std::toupper( *a ) != std::toupper( *b )) return false;
  if (*a || *b) return false;
  return true;


const char *IncomingTCPCommandStrings[] = {

// Convert string into index:
TCPCommand = std::find_if(
            - IncomingTCPComandStrings;

This, of course, is very simplistic. You would be better off playing with std::string.
Further, if your enums aren't sequential, you'll be better off using a std::map().

Hope this helps.

Hi Duaos,
Thankx 4 ur support. but frm ur solution i couldnt solve the problem. bcozz i hv to use enumeration. (cannot use char array of pointers like u introduce). could u pls tell me way of overcoming this issue by using enumerations as well

You are aware that my solution converts a string into an integer value compatible with your enum?

This question has already been answered. Start a new discussion instead.