switch语句中的C字符串

时间:2012-05-07 11:06:25

标签: c switch-statement

  

可能重复:
  best way to switch on a string in C

字符串(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吗?还请注意,我不能简单地比较货币的第一个字符,因为有些(不是在这个例子中)以相同的字符开头。

3 个答案:

答案 0 :(得分:4)

一种方法是定义C字符串数组,并将其用作订购的定义:

const char *currencies[] = {"USD", "GBP", "EUR"};

现在,您可以在currencies中搜索字符串,并在switch语句中使用 index

您可以获得幻想并对字符串进行排序,并使用bsearchO(LogN)

中查找索引

答案 1 :(得分:1)

许多语言中的正确答案是某种关联容器;例如,在C ++中std::map。在Glib中有一个关联数组的C实现:请参阅here.还有其他库有自己的。

答案 2 :(得分:1)

我建议在strcmp函数的情况下使用if语句。