将常量字符与字符串进行比较

Comparing const char to a string

本文关键字:比较 字符串 常量 字符      更新时间:2023-10-16

我将常量字符与字符串进行比较时遇到问题...如果我使用Com_Printf("%s",值);它返回我想要的 (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

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

value != "0.3c"

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

if(strcmp(value, "0.3c"))
{
   // strings are not equal
}
else
{
   // strings are equal
}

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

value使用std::string

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

然后,您可以正常比较它。如果由于任何原因根本无法使用字符串(返回值可以转换),请使用 strcmp

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

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

if (strcmp(value, "0.3c") != 0)
{
    // Print warning
}