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