首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int或char枚举到int,而不是ASCII

int或char枚举到int,而不是ASCII
EN

Stack Overflow用户
提问于 2011-10-23 03:37:16
回答 9查看 2.2K关注 0票数 1

我在玩扑克,碰壁了。任何帮助都是最好的。

我有12张纸币。这些值是char 2-9或TJQKA (如下所示)。我需要将它们传递给一个整型数组,这样它们的值就是传递的值(无论是整型值还是枚举值),而不是它们的ASCII。

对于下面的示例,我想要:

代码语言:javascript
复制
val[5] = {2,5,10,12,11}

而不是:

代码语言:javascript
复制
val[5] = {50,53,84,81,74}
代码语言:javascript
复制
enum cardvalues {T=10 , J , Q , K , A}
int val[5];


string value = "25TQJ";

for (int i = 0; i < 5; i++)
{
    val[i] = value[i]; 
}
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-10-23 03:42:42

您需要一个转换函数:

代码语言:javascript
复制
int to_card(const char v)
{
    switch(v)
    {
    case '2': return 2;
    case '3': return 3:
    // etc...

    case 'T': return 10;
    case 'J': return 11;

    // etc...
}

然后在你的循环中:

代码语言:javascript
复制
val[i] = to_card(value[i]);
票数 4
EN

Stack Overflow用户

发布于 2011-10-23 03:41:53

我强烈建议使用map而不是枚举。

代码语言:javascript
复制
map<char,int> myCardMap;
myCardMap['T'] = 10;
...
val[i] = myCardMap[value[i]];
票数 7
EN

Stack Overflow用户

发布于 2011-10-23 03:44:19

使用键中的ASCII值和值中的枚举值创建一个std::map

代码语言:javascript
复制
std::map<char, int> asciiMap;
asciiMap['T'] = 10;
asciiMap['J'] = 11;
//etc....

然后将字符与地图进行匹配

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7862092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档