Or something slightly more robust when dealing with invalid "states".
Code:
#include <iostream>
using namespace std;
enum State_t
{
STATE_1,
STATE_2,
STATE_3,
STATE_4,
STATE_5,
STATE_6,
STATE_7,
};//State_t
struct StateNamePair
{
State_t m_state;
const char *m_name;
};//StateNamePair
const StateNamePair StateNameTbl[] =
{
{STATE_1, "STATE_1"},
{STATE_2, "STATE_2"},
{STATE_3, "STATE_3"},
{STATE_4, "STATE_4"},
{STATE_5, "STATE_5"},
{STATE_6, "STATE_6"},
{STATE_7, "STATE_7"},
};//StateNameTbl
const char* LookupStateName(int state)
{
const int StateNameTbl_SZ = sizeof(StateNameTbl) / sizeof(*StateNameTbl);
for (int n = 0; n < StateNameTbl_SZ; n++)
{
if (state == StateNameTbl[n].m_state)
return StateNameTbl[n].m_name;
}//for
return 0;
}//LookupStateName
int main()
{
const char *state_name = LookupStateName(STATE_1);
if (state_name)
cout << "Found name: " << state_name << endl;
else
cout << "Name not found." << endl;
return 0;
}//main
gg