首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在目标C中将char映射为int

在目标C中将char映射为int
EN

Stack Overflow用户
提问于 2011-08-30 17:32:27
回答 3查看 3.5K关注 0票数 1

我需要将目标-C中的char值映射为int值。我知道NSDictionary不存在,因为它处理引用类型,而这些是值。在迭代NSString时将使用该映射。字符串中的每个字符将转换为整数值。所有整数都将相加在一起。

使用NSDictionary似乎是不合适的,因为我必须做的所有类型强制。(将值类型char和int转换为引用类型。)

我想,要做到这一点,我必须先转到C语言,但我对C库的经验非常有限。

大多数C开发人员是否使用将char值映射到int值的方法?

编辑用于澄清

C#的等价物是Dictionary<char,int>

在伪码中,我想说明以下几点:

代码语言:javascript
运行
复制
for (int i = 0; i < [string length]; i++) {
    char current = [string characterAtIndex:i];
    int score = map[current]; // <- I want map without boxing 
    // do something with score
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-30 17:47:09

如果我正确理解,您希望将chars和ints作为键和值存储在字典中。但是,NSDictionary只接受对象。解决方案是什么?将chars和ints包装在NSNumber对象中:

代码语言:javascript
运行
复制
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                      [NSNumber numberWithInt:1],
                      [NSNumber numberWithChar:'a'],
                      [NSNumber numberWithInt:2],
                      [NSNumber numberWithChar:'b'], 
                      nil];

或者,如果您不想装箱,为什么不直接创建一个接受chars并返回ints的函数呢?

代码语言:javascript
运行
复制
int charToScore(char character)
{
    switch (character) {
        case 'a':
            return 1;
        case 'b':
            return 2;
        default:
            return 0;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2011-08-30 17:41:10

查到int?

代码语言:javascript
运行
复制
char aChar = 'a';
int foo = (int) aChar;

好了。不需要哈希什么的。即使您想要映射char -> NSNumber,一个由256个字符组成的数组(char是一个签名的8位类型)也是非常小的开销。

(除非我完全误解了你的问题-你是在问(char*)吗?即C字符串?显示一些代码。)。

票数 3
EN

Stack Overflow用户

发布于 2011-08-30 18:00:28

@Pontus在目标C中有正确的答案,但是如果你愿意使用C++,你可以使用std::map<char, int> (或者仍然有点不标准的unordered_map<char, int>)。

要在Objective中使用C++,必须将文件从Whatever.m重命名为Whatever.mm--这告诉GCC该文件包含Objective++,它允许您使用带有C++基础结构的Objective语法。

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

https://stackoverflow.com/questions/7247340

复制
相关文章

相似问题

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