Если я вас правильно понимаю, вы хотите преобразовать строку в значения карты (хотя по какой-то причине у вас туз в качестве 13-id, вы можете сказать, что используйте 1 в качестве туза, хотя я вижу вашу логику для этого вигра в покер).
Простое использование enum не поможет, так как во время выполнения у вас действительно нет нужной информации.Перечисление - это концепция времени компиляции, предназначенная главным образом для помощи программисту и выполнения проверки.
Есть много способов сделать то, что вы хотите, вы можете иметь массив index для char или массив из двух записей char и value.Для простоты изменений я бы остановился на следующем
typedef struct
{
char m_cCharacter;
int m_nValue;
} LOOKUP;
LOOKUP lookup_data[] = {
{ "2", 2 },
{ "3", 3 },
{ "4", 4 },
{ "5", 5 },
{ "6", 6 },
{ "7", 7 },
{ "8", 8 },
{ "9", 9 },
{ "T", 10 },
{ "J", 11 },
{ "Q", 12 },
{ "K", 13 },
{ "A", 14 }
};
int GetCharacter(char c)
{
int retval = -1; // Invalid
for(int i = 0; i < 13; i++)
{
if ( lookup_data[i].m_cCharacter == c )
{
retval = lookup_data[i].m_nValue;
break;
}
}
return retval;
}
for (int i = 0; i < 5; i++)
{
val[i] = GetCharacter(value[i]);
}
Существуют более эффективные способы с STL, и вы должны иметь больше проверок на ошибки и длины обнаружений массивов, но, надеюсь, вы поняли идею.Вы можете использовать перечисление в поиске, например
{ "T", T },
Если вы предпочитаете.Кстати, я не скомпилировал этот код, поэтому он, вероятно, не будет собираться;)