如果我正確理解你,你想要將字符串轉換爲卡片值(雖然由於某種原因,你有ace作爲13-id被誘惑說使用1作爲ace,但我可以看到你的邏輯在撲克遊戲中)。
只是使用枚舉不會幫助在運行時,你真的沒有你需要的信息。枚舉是一個編譯時間的概念,主要是爲了幫助程序員和處理檢查。
有很多方法可以做到你想要的,你可以有一個索引數組到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 },
如果您願意。順便說一句 - 我還沒有編譯此代碼,以便它可能不會建立;)
將字符串轉換爲枚舉幾乎是不可能的,沒有一些認真的工作,去一個switch語句,它會讓你的生活更加快樂。 – Serdalis