将char*相互比较

compare char* with each other

本文关键字:比较 char      更新时间:2023-10-16

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

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

然而,这种类型的比较似乎不起作用。"Something"不是也是一个常量字符指针吗?或者在这种情况下是在比较地址?

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

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

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

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

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

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

或:

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

IMO,这个应该几乎从来都不是必要的——通常应该在整个过程中使用std::string,而不是从一个指向〔const〕char的指针开始,然后进行转换。

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