5

可能重复:
在 C 中打开字符串的最佳方法

与 switch 语句一起用于字符串(c 字符数组)的一般方法是什么?我正在查询我的数据库中存储为的货币

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

4

3 回答 3

5

一种方法是定义一个 C 字符串数组,并将其用作您的排序定义:

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

现在您可以搜索currencies您的字符串,并在 switch 语句中使用它的索引。

您可以花哨并 - 对您的字符串进行排序,并使用它bsearch来查找索引O(LogN)

于 2012-05-07T11:09:09.177 回答
1

许多语言的正确答案是某种关联容器std::map例如,在 C++ 中。在 Glib 中有一个关联数组的 C 实现:见这里。还有其他图书馆有自己的。

于 2012-05-07T11:09:26.753 回答
1

我建议对这种带有strcmp函数的情况使用 if 语句。

于 2012-05-07T11:12:24.847 回答