免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2511 | 回复: 9
打印 上一主题 下一主题

[C] 通过字符串取得整型值,有什么好办法吗? [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之广夏
日期:2021-01-28 16:59:23
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-23 09:54 |只看该作者 |倒序浏览
比如
  1. #define NUMEQ 0
  2. #define NUMGT 1
  3. #define NUMLT 2
  4. ...
复制代码
当遇到字符串“NUMEQ”的时候如何得到整型值0?
除了比较字符串,有什么好的办法吗?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2012-08-23 09:59 |只看该作者
这么定义宏也没法字符串比较吧

论坛徽章:
1
15-16赛季CBA联赛之广夏
日期:2021-01-28 16:59:23
3 [报告]
发表于 2012-08-23 10:02 |只看该作者
回复 2# hellioncu


    不是,跟那个宏没关系,我贴上只是说NUMEQ=0,字符串比较if (strcmp(str, "NUMEQ") == 0) n=0;

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2012-08-23 10:04 |只看该作者
anyc 发表于 2012-08-23 10:02
回复 2# hellioncu


可以建一个对照表查表,hash、map等等都可以
本质都离不开比较。

论坛徽章:
0
5 [报告]
发表于 2012-08-23 10:10 |只看该作者
除了借助于额外的结构做一个映射,应该没有更好的办法了吧
struct
{
    char str[SIZE];
    int    value;
} map[] = { ... };

论坛徽章:
7
摩羯座
日期:2013-12-05 10:42:57辰龙
日期:2013-12-27 13:40:49亥猪
日期:2014-01-15 09:10:37天秤座
日期:2014-01-20 11:22:20辰龙
日期:2014-01-26 17:02:25午马
日期:2014-01-27 14:22:34水瓶座
日期:2014-02-19 09:36:40
6 [报告]
发表于 2012-08-23 10:21 |只看该作者
个人最好的办法就是用map

论坛徽章:
0
7 [报告]
发表于 2012-08-23 12:30 |只看该作者
多的考虑用map,不多可以用vector,字符串如果不是特别长还可以直接当long long用

论坛徽章:
0
8 [报告]
发表于 2012-08-23 12:53 |只看该作者
这个是C语言 还是C++呢。

要是C语言 像5楼说的 一个结构体就搞定了。

要是C++ 你用map。

或者你直接用枚举类型啊。

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
9 [报告]
发表于 2012-08-23 12:57 |只看该作者
用 map 是杀鸡用牛刀,应该用 有序的vector+二分查找,要比map快

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
10 [报告]
发表于 2012-08-23 17:18 |只看该作者
如果值都是从0开始的连续的,则直接用一个字符指针数组。然后就是字符串的匹配。匹配的数组下标就是其值。如果字符数组是排好序的。则可以进行快速匹配。字符串的快速匹配算法有很多。但基本都是以排序为前提的。

如果值是散列的,则需要一个对应值表。只是多一步查表操作。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP