我目前有一个名为getResult的方法,它返回const char *现在我正在做类似这样的事情
if(getResult=="Something")
{
...
}
然而,似乎这种比较不起作用。是不是“Something”也是一个const char指针?或者在这种情况下是被比较的地址?
答案 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
类将比较内容。