我目前有一个名为 getResult 的方法,它返回 const char* 现在我正在做这样的事情
if(getResult=="Something")
{
...
}
但是,这种比较似乎不起作用。“Something”不是也是一个 const char 指针吗?或者在这种情况下是比较地址吗?
我目前有一个名为 getResult 的方法,它返回 const char* 现在我正在做这样的事情
if(getResult=="Something")
{
...
}
但是,这种比较似乎不起作用。“Something”不是也是一个 const char 指针吗?或者在这种情况下是比较地址吗?
如果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
在整个过程中使用。
是的,正在比较地址。要比较两个字符串的内容strcmp
,请使用以下函数:
if (strcmp(getResult, "Something") == 0) {
...
}
如果您比较 C/C++ 中的 2 个字符串常量,您会比较每个字符串的实际地址,而不是内容。使用strcmp
2 个 c 字符串或使用 C++ 的std::string
类将比较内容。