2

我在将 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

4

3 回答 3

9

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

value != "0.3c"

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

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

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

于 2012-04-22T19:29:58.207 回答
3

使用std::stringfor value

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

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

if (strcmp (value, "0.3c") != 0)
{
    ...
}
于 2012-04-22T19:28:34.340 回答
0

根据您使用它的方式,它似乎SearchInfoString返回. 因此,您可以只使用to比较。例如:char *Com_Printfstrcmp()value"0.3c"

if (strcmp(value, "0.3c") != 0)
{
    // Print warning
}
于 2012-04-22T19:29:15.213 回答