我已经学习C++几周了,现在我正在尝试自己编写一个小程序,同时练习我所学的内容。
所以我的程序是一个扑克手分配器。
我首先创建了一个简单的"card"类,其中包含两个方法,value和suit。
起初,我试图为两者都做一个枚举,但我无法用整数设置枚举(例如enum value {2,3,4,5,6,7,8,9,T,J,Q,K,A}
不起作用,这是正常的。
我的suits枚举工作得很好,只是当我想打印一张卡(我在类中实现了operator<<
(时,我不知道如何将整数转换为相应的suits。举个例子,我十个黑桃得10个1。当我想使用包含信息10和1 的cout << card
打印卡时,我想知道如何在我的operator<<()
函数中转换它以获得类似T s
的东西
tldr我想知道如何将例如"10 1"转换为"T s(T spades("同时保持2到9的
谢谢!!
我想知道如何将例如"10 1"转换为"T s(T spades(",同时保持2到9(9 1->9 s(
您可以使用两个数组将数字映射到字符串。
std::string valueMap[13] = {"A", "2", ..., "Q", "K"};
std::string suitMap[4] = {"Clubs", "Diamonds", "Hearts", "Spades"};
假设使用值为1-13的enum
作为值,使用值为1-4的enum
作为套装,则可以使用valueMap[value-1]
获取值的字符串,使用suitMap[suit-1]
获取套装的字符串。