将const char与字符串进行比较

时间:2012-04-22 19:22:17

标签: c++ if-statement char const

我有一个问题,比较一个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

3 个答案:

答案 0 :(得分:8)

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

value != "0.3c"

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

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

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

答案 1 :(得分:3)

std::string使用value

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

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

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

答案 2 :(得分:0)

似乎SearchInfoString根据您使用char *的方式返回Com_Printf。因此,您只需使用strcmp()即可将value"0.3c"进行比较。例如:

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