字符串(c字符数组)与switch语句一起使用的一般方法是什么?我在我的数据库中查询存储为
的货币"USD"
"EUR"
"GBP"
等等。来自PHP背景,我只会这样做:
switch ($string) {
case "USD":
return "$";
break;
case "EUR":
return "€";
break;
case "GBP":
return "£";
break;
default:
return "$";
}
在C中,case-value必须是整数。我将如何在C中实现类似的东西?我最终会在一个巨大的if / else块中编写很多strcmp吗?还请注意,我不能简单地比较货币的第一个字符,因为有些(不是在这个例子中)以相同的字符开头。
答案 0 :(得分:4)
一种方法是定义C字符串数组,并将其用作订购的定义:
const char *currencies[] = {"USD", "GBP", "EUR"};
现在,您可以在currencies
中搜索字符串,并在switch语句中使用 index 。
您可以获得幻想并对字符串进行排序,并使用bsearch
在O(LogN)
答案 1 :(得分:1)
许多语言中的正确答案是某种关联容器;例如,在C ++中std::map
。在Glib中有一个关联数组的C实现:请参阅here.还有其他库有自己的。
答案 2 :(得分:1)
我建议在strcmp
函数的情况下使用if语句。