Преобразовать целочисленное значение в строку с перечислением в качестве основы

Я изучаю C ++ в течение нескольких недель, и теперь я пытаюсь самостоятельно запрограммировать немного и практиковать то, чему научился одновременно.

Так что моя программа — это дистрибьютор покерных рук.

Я начал с создания простого «карточного» класса, который содержит два метода: стоимость и масть.

Сначала я попытался сделать перечисление для обоих, но я не мог установить перечисление с целыми числами (например,enum value {2,3,4,5,6,7,8,9,T,J,Q,K,A} не работает, что нормально.

Мое перечисление для костюмов работает просто отлично, просто когда я хочу напечатать карту (я реализовал operator<< в моем классе) Я не знаю, как преобразовать мои целые числа в соответствующие масти. Я получу, например, 10 1 за десять пик. Я хотел бы знать, как преобразовать это в моем operator<<() функция, чтобы получить что-то вроде T s когда я хочу распечатать карту с помощью cout << card который содержит информацию 10 и 1

;

;

tldr Я хочу знать, как преобразовать, например, «10 1» в «T s (T пики)», сохраняя при этом значения от 2 до 9 (9 1-> 9 с)

Спасибо!!

0

Решение

Я хочу знать, как преобразовать, например, «10 1» в «T s (T пики)», сохраняя при этом значения от 2 до 9 (9 1-> 9 с)

Вы можете использовать пару массивов для сопоставления чисел со строками.

std::string valueMap[13] = {"A", "2", ..., "Q", "K"};
std::string suitMap[4] = {"Clubs", "Diamonds", "Hearts", "Spades"};

Предполагая, что вы используете enum со значениями 1-13 для значения и enum со значениями 1-4 для костюма, вы можете использовать valueMap[value-1] чтобы получить строку для значения и использовать suitMap[suit-1] чтобы получить строку для костюма.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]