将 const char 与字符串进行比较

Posted

技术标签:

【中文标题】将 const char 与字符串进行比较【英文标题】:Comparing const char to a string 【发布时间】:2012-05-03 12:24:35 【问题描述】:

在比较 const char 和字符串时遇到问题...如果我使用 Com_Printf ("%s", value); 它返回我想要的(0.3c),但是如何将值转换为字符串并将其与 0.3c 进行比较?这就是我所拥有的:

value = SearchInfostring(msg, "shortversion");
if (value != "0.3c")

    Com_Printf (MSG_WARNING,
            Com_Printf (MSG_WARNING,
                "> WARNING: Value: Should be 0.3c, is:  %s \n",
                value);
//Run stuff

返回: 警告:值:应该是 0.3c,是:0.3c

【问题讨论】:

显示更多代码。值在哪里声明? 我假设你写的 valuestd::string。您确定value 中没有尾随/前导空格吗? 【参考方案1】:

如果 value 是 const char* 类型,则表达式

value != "0.3c"

是比较两个指针(地址),而不是字符串。你想比较字符串和字符串文字所以可以使用strcmp:

if(strcmp(value, "0.3c"))

   // strings are not equal

else

   // strings are equal

请记住,C++ 中的首选字符串类型是 std::string

【讨论】:

我很高兴它有帮助。请注意,如果 valuestd::string 类型,则您发布的代码将按预期工作(正如克里斯在他的回答中发布的那样)。【参考方案2】:

std::string 用于value

std::string value = SearchInfoString(msg, "shortversion");

然后,你就可以正常比较了。如果出于某种原因根本无法使用字符串(返回值可以转换),请使用strcmp

if (strcmp (value, "0.3c") != 0)

    ...

【讨论】:

【参考方案3】:

似乎SearchInfoString 返回一个char *,这取决于您将它与Com_Printf 一起使用的方式。因此,您可以只使用strcmp()value"0.3c" 进行比较。例如:

if (strcmp(value, "0.3c") != 0)

    // Print warning

【讨论】:

以上是关于将 const char 与字符串进行比较的主要内容,如果未能解决你的问题,请参考以下文章

将 Python 子字符串与 char 值进行比较

C++标准库 如何连接两个const char *类型字符串,并返回const char * 类型结果?

将字符串与Hangman项目中的char进行比较时的编译错误

将字符串与字符序列进行比较

如何将 const char * 数组项添加到 const char * 字符串?

将keypressed与char进行比较