Я изучаю 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 с)
Спасибо!!
Я хочу знать, как преобразовать, например, «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]
чтобы получить строку для костюма.
Других решений пока нет …