c++中如何比较const char*和字符串

How to compare const char* with a string in C++?

本文关键字:char const 字符串 比较 何比较 c++      更新时间:2023-10-16

我正在使用c++,我正在尝试比较字符串。

下面是我的代码,它给我返回const char* -

    const char* client_id() const {
        return String(m_clientPos);
    }

现在我像这样比较字符串-

cout<<client_ptr->client_id()<< endl;
if (strcmp(client_ptr->client_id(), "Hello")) {
    ..
} else {
    ..
}

但是它永远不会出现在if语句中。但是我的计算器正确地打印出了Hello。我做错了什么吗?

你需要做if (0 == strcmp(...

见http://www.cplusplus.com/reference/cstring/strcmp/

strcmp

返回一个整数值,指示两个字符串之间的关系:零值表示两个字符串相等。大于零的值表示第一个不匹配的字符在str1中的值大于str2中的值;

永远不会进入if语句

当两个字符串相同时,strcmp函数返回0,因此您应该看到,当两个字符串彼此相等时,代码击中else分支。

  • 0表示两个字符串相等。
  • 大于零的值表示第一个不匹配的字符在str1中的值大于str2中的值;
  • 小于零表示相反。

由于String看起来不像一个内置类,并且假设您可以访问它的源代码,因此您最好将const char*String类的成员函数进行比较。