Вы можете попробовать использовать enum. Это буквально не строка, а набор постоянных целых чисел, которые гарантированно не разделяют значения.
enum CardRank
{
Ace,
Two,
... ... ...
Jack,
Queen,
King
};
Это создает новый тип CardRank
, который вы можете использовать только для рангов карт в вашем коде. Вы просто делаете свой член rank
типа CardRank
и можете ссылаться на его значение по имени.
Под капотом для большинства намерений и целей подразумевается целое число без знака, которое может принимать только значения в диапазоне от Ace
(0) до King
(12)
Учитывая, что я не вижу, что вы пытаетесь записать эту строку на экран, это может быть путь. И даже если вы планируете выписать эту строку, вы все равно можете использовать это перечисление и извлекать значение строки только тогда, когда вам нужно написать его с помощью следующего вида:
std::string RankNames[] =
{
"Ace",
"2",
... ... ... ...
"Jack",
"Queen",
"King"
};
CardRank rank = Ace;
std::cout << RankNames[rank] << std::endl;