将整数值转换为以枚举为基础的字符串

Convert an integer value to a string with an enum as basis

我已经学习 C++ 几周了,现在我正在尝试自己编写一些小东西,同时练习我学到的东西。

所以我的程序是扑克牌分发器。

我首先创建了一个简单的 "card" class,其中包含两个方法,值和花色。

起初我尝试为两者都做一个枚举,但我无法将枚举设置为整数(例如enum value {2,3,4,5,6,7,8,9,T,J,Q,K,A}不起作用,这是正常的。

我的套装枚举工作得很好,只是当我想打印一张卡片时(我在我的 class 中实现了 operator<<)我不知道如何将我的整数转换为相应的花色。例如,十张黑桃我会得到 10 1。当我想使用包含信息 10 和 1

cout << card 打印卡片时,我想知道如何在我的 operator<<() 函数中将其转换为类似 T s 的内容]

;

;

tldr 我想知道如何将例如“10 1”转换为 "T s (T spades)" 同时保持 2 到 9 (9 1->9 s)

谢谢!!

I want to know how to convert for example "10 1" to "T s (T spades)" while keeping 2 to 9 as such (9 1->9 s)

您可以使用几个数组将数字映射到字符串。

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] 获取花色的字符串。