将 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
【问题讨论】:
显示更多代码。值在哪里声明? 我假设你写的value
是 std::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
。
【讨论】:
我很高兴它有帮助。请注意,如果value
是 std::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 与字符串进行比较的主要内容,如果未能解决你的问题,请参考以下文章
C++标准库 如何连接两个const char *类型字符串,并返回const char * 类型结果?
将字符串与Hangman项目中的char进行比较时的编译错误