4

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

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

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

4

3 回答 3

5

如果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在整个过程中使用。

于 2013-02-09T00:06:23.287 回答
4

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

if (strcmp(getResult, "Something") == 0) {
    ...
}
于 2013-02-09T00:06:31.617 回答
2

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

于 2013-02-09T00:08:54.130 回答