gpt4 book ai didi

将多个 const char* 与一个 const char* 进行比较

转载 作者:行者123 更新时间:2023-12-02 08:08:00 25 4
gpt4 key购买 nike

今天可能是基本款。

我有一个 const char* 的输入,我想将它与 const char* 的许多选项进行比较。就像我在下面写的一样。

str_equal - 将其视为 const char* 的比较函数。 'str' 是输入 const char*。

所以,这样写:

bool function1(const char* str) {
if (str_equal(str, "abc")) {
// Do for abc
} else if (str_equal(str, "def")) {
// Do for def
} else if (str_equal(str, "ghi")) {
// Do for ghi
} ...
...
}

想知道实现此目标的其他可能方法是什么。如您所见,它看起来非常丑陋。

最佳答案

我会使用结构数组:

static bool do_abc(void)
{
// ...
}

bool dispatch(const char *str)
{
static const struct {
const char *key;
bool (*func)(void);
} funcs[] = {
{ "abc", do_abc },
{ "def", do_def },
{ "ghi", do_ghi },
};
for (size_t i = 0; i < sizeof funcs / sizeof *funcs; ++i)
{
if(strcmp(funcs[i].text, str) == 0)
return funcs[i].func();
}
return false;
}

这假设所有函数都具有相同的签名,否则很难一概而论。

顺便说一句,这可以称为“数据驱动代码”的示例,这通常很好。

关于将多个 const char* 与一个 const char* 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com