enum would work or you can use the / and % operators to get the value and suit.
22 is a bad choice for 2 of clubs in my view. 2 of clubs should be 1, 14, 27, or 40 depending on whether clubs has a value of 0, 1, 2, or 3.
Presumably 2 has a value of 1 since it is the second lowest card value (after ace) and we generally make the lowest index 0, which would work well if you are numbering the cards from 0 to 51.
string card[] = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"Jack", "Queen", "King"};
string suit[] = {"Spades", "Hearts", "Clubs", "Diamonds"};
In the above example,
card[1] is "2" and
suit[2] is "Clubs", so:
"2 of Clubs" could map to
(13 * 2) + 1 =
27 . To get the indexes from 27, you could do this:
int suitIndex = 27 / 13; // = 2
int cardIndex = 27 % 13; // = 1
cout << card[cardIndex] << " of " << suit[suitIndex]; // "2 of Clubs"