将char *相互比较

时间:2013-02-09 00:05:01

标签: c++ visual-studio-2010

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

if(getResult=="Something")
{
  ...
}

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

3 个答案:

答案 0 :(得分:4)

如果getResult是方法(成员函数),则需要调用来比较结果,因此您可能需要:

if (something.getResult() == std::string("Something"))
  // ...

另一方面,如果getResult实际上是指向char(或指向const char的指针)的指针,则需要在比较之前将您要比较的内容之一转换为string ):

if (getResult == std::string("Something"))

或:

if (std::string(getResult) == "something))

IMO,这个应该几乎不需要 - 而不是从指向[const] char的指针开始,然后转换,通常应该始终使用std::string

答案 1 :(得分:3)

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

if (strcmp(getResult, "Something") == 0) {
    ...
}

答案 2 :(得分:1)

如果比较C / C ++中的2个字符串常量,则比较每个字符串的实际地址,而不是内容。在2个c字符串上使用strcmp或使用C ++的std::string类将比较内容。