我正在使用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
。我在做什么事吗?
答案 0 :(得分:4)
您需要if (0 == strcmp(...
请参阅http://www.cplusplus.com/reference/cstring/strcmp/
strcmp
返回一个表示字符串之间关系的整数值: 零值表示两个字符串相等。 大于零的值表示不匹配的第一个字符在str1中的值大于在str2中的值;小于零的值表示相反。
答案 1 :(得分:2)
它永远不会进入if语句。
当字符串相同时,strcmp
函数返回零,因此当两个字符串彼此相等时,您应该看到代码命中else
分支。
由于String
看起来不像内置类,并且假设您可以访问其源代码,因此最好与const char*
进行String
成员函数的比较{{1} }。class。