如何将const char *与C ++中的字符串进行比较?

时间:2014-05-21 02:41:31

标签: c++ string comparison

我正在使用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声明。但我的cout正确打印出Hello。我在做什么事吗?

2 个答案:

答案 0 :(得分:4)

您需要if (0 == strcmp(...

请参阅http://www.cplusplus.com/reference/cstring/strcmp/

  

strcmp

     

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

答案 1 :(得分:2)

  

它永远不会进入if语句。

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

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

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