当前位置:  开发笔记 > 编程语言 > 正文

从const char*参数中取出索引

如何解决《从constchar*参数中取出索引》经验,为你挑选了1个好方法。

我有以下代码:

int some_array[256] = { ... };

int do_stuff(const char* str)
{
   int index = *str;
   return some_array[index];
}

显然上面的代码会导致某些平台出现错误,因为*str实际上可能是负面的.

所以我想到了两个可能的解决方案:

    在赋值(unsigned int index = (unsigned char)*str;)上转换值.

    传递const unsigned char*代替.

编辑:这个问题的其余部分没有得到治疗,所以我把它移到一个新的线程.



1> Kerrek SB..:

的符号性char的确是依赖于平台的,但你知道的是,有尽可能多的价值char,因为是unsigned char和转换是单射.因此,您绝对可以转换值以将查找索引与每个字符相关联:

unsigned char idx = *str;
return arr[idx];

你当然应该确保arr至少有UCHAR_MAX + 1元素.(这可能会导致欢闹的边缘情况sizeof(unsigned long long int) == 1,幸运的是,很少见.)

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有