将整数值转换为以枚举为基础的字符串 我已经学习C++几周了,现在我正在尝试自己编写一个小东西,同时练习我学到的东西。

将整数值转换为以枚举为基础的字符串 我已经学习C++几周了,现在我正在尝试自己编写一个小东西,同时练习我学到的东西。,c++,type-conversion,poker,playing-cards,C++,Type Conversion,Poker,Playing Cards,所以我的计划是一个扑克手经销商 我首先创建了一个简单的“card”类,它包含两个方法:value和suit 起初,我尝试对这两个对象都进行枚举,但无法使用整数设置枚举(例如枚举值{2,3,4,5,6,7,8,9,t,J,Q,K,A}不起作用,这是正常的 我的套装枚举工作得很好,只是当我想打印卡片时(我实现了操作符) 我想知道如何将例如“101”转换为“ts(T spades)”,同时保持2到9(91->9s) 可以使用两个数组将数字映射到字符串 std::string valueMap[13]

所以我的计划是一个扑克手经销商

我首先创建了一个简单的“card”类,它包含两个方法:value和suit

起初,我尝试对这两个对象都进行枚举,但无法使用整数设置枚举(例如
枚举值{2,3,4,5,6,7,8,9,t,J,Q,K,A}
不起作用,这是正常的

我的套装枚举工作得很好,只是当我想打印卡片时(我实现了
操作符)
我想知道如何将例如“101”转换为“ts(T spades)”,同时保持2到9(91->9s)

可以使用两个数组将数字映射到字符串

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]
获取套装的字符串

我想知道如何将例如“101”转换为“ts(T spades)”,同时保持2到9(91->9s)

可以使用两个数组将数字映射到字符串

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

只是好奇,为什么你希望2…9是数字,而10是字母,因为在卡片中它也是数字?@KillzoneKid是单字符符号的常见缩写。@KillzoneKid IIRC,在某些地方(例如法国),它是字母。记住,你的文化不是唯一的;)我是法国人,我从来没有在纸牌游戏中看到过T。但你是对的,这不是问题所在。我只是想让事情变得更顺利,因为我还在控制台中编程,这样我就可以对每张牌的专用空间为2个字符的牌板进行排序。事实上,当我玩的时候,有一个“10”在我的卡片上!只是好奇,为什么你想要2…9作为数字,而10作为字母,因为在卡片上它也是一个数字?@KillzoneKid是单字符记数法的常用缩写。@KillzoneKid IIRC,在某些地方(例如法国)它是一个字母。记住,你的文化不是唯一的;)我是法国人,我在纸牌游戏中从未见过T。但你是对的,这不是问题所在。我只是想让事情变得更顺利,因为我还在控制台中编程,这样我就可以用每张卡2个字符的专用空间对卡板进行排序。事实上,当我玩的时候,我的牌上有一个“10”!这种解决办法确实更好。如果使用枚举,则不能直接使用放入枚举中的名称。只有编译器知道它们,它们与最终程序中的数字隐式关联。使用枚举,您必须创建一个实现
开关(…){…}
的函数来返回相应的值。使用上面的解决方案,您可以直接使用字符串。@BenjaminBarrois这与枚举兼容。非常感谢,这就是我使用的,再加上一个int-to-string函数,可以将int转换为valueMap[int-1]。我不想用数字作为字符串。我想它会随着时间而来的!再次感谢您。@Tommy XavierRobillard,不客气。很高兴我能帮忙。是的,随着时间的推移,你会学到交易的诀窍:)@FeiXiang是的,它与enum兼容,但是如果你想输出一个与enum条目同名的字符串,你必须手动关联它们,不能按原样使用名称。这个解决方案确实更好。如果使用枚举,则不能直接使用放入枚举中的名称。只有编译器知道它们,它们与最终程序中的数字隐式关联。使用枚举,您必须创建一个实现
开关(…){…}
的函数来返回相应的值。使用上面的解决方案,您可以直接使用字符串。@BenjaminBarrois这与枚举兼容。非常感谢,这就是我使用的,再加上一个int-to-string函数,可以将int转换为valueMap[int-1]。我不想用数字作为字符串。我想它会随着时间而来的!再次感谢您。@Tommy XavierRobillard,不客气。很高兴我能帮忙。是的,随着时间的推移,你会学到交易的诀窍:)@FeiXiang是的,它与enum兼容,但是如果你想输出一个与enum条目同名的字符串,你必须手动将它们关联起来,你不能按原样使用名称。