相互比较 char*

Cas*_*211 4 c++ visual-studio-2010

我目前有一个名为 getResult 的方法,它返回 const char* 现在我正在做这样的事情

if(getResult=="Something")
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这种类型的比较似乎不起作用。“Something” 不也是一个 const char 指针吗?或者在这种情况下是比较地址?

小智 8

是的,正在比较地址。要比较两个字符串的内容strcmp,请使用以下函数:

if (strcmp(getResult, "Something") == 0) {
    ...
}
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 5

如果getResult是一个方法(成员函数),你需要调用它来比较结果,所以你可能想要:

if (something.getResult() == std::string("Something"))
  // ...
Run Code Online (Sandbox Code Playgroud)

另一方面,如果getResult确实是指向 char 的指针(或指向 const char 的指针),则需要在比较string之前将要比较的对象之一进行转换):

if (getResult == std::string("Something"))
Run Code Online (Sandbox Code Playgroud)

或者:

if (std::string(getResult) == "something))
Run Code Online (Sandbox Code Playgroud)

国际海事组织,这应该永远不需要-而不是用一个指针开始[常量]字符,然后转换,你应该正常使用std::string贯穿始终。