strcmp()可以在c ++中使用字符串吗?

时间:2014-08-18 09:36:37

标签: c++ string strcmp

我有这行代码

if(strcmp(ob[i].getBrand(), ob[j].getBrand()) > 0)

我收到此错误

  

错误C2664:'strcmp':无法将参数1从'std :: string'转换为'const char *'

这是否意味着strcmp不能使用字符串,而是必须将其转换为char?

3 个答案:

答案 0 :(得分:9)

不要使用strcmp。使用与std::string::compare具有相同行为的strcmp

if(ob[i].getBrand().compare(ob[j].getBrand()) > 0)

或者好多了

if(ob[i].getBrand() > ob[j].getBrand())

一般情况下,当你必须测试字符串不同的各种情况时,你应该使用std::string::compare,例如。

auto cmp = ob[i].getBrand().compare(ob[j].getBrand());

if(cmp == 0) ...
else if(cmp > 0) ...
else if(cmp < 0) ...

这样你只需要对字符串进行一次比较操作。

然而,在你的情况下,你显然只需要在一个案例中使用比较结果(我真的假设,因为我不知道给出代码),然后operator >就足够了,眼睛就更容易了(大脑!)。

答案 1 :(得分:6)

如果getBrand()std::string >只需使用{{1}}比较。

答案 2 :(得分:2)

只需使用.c_str()string转换为char数组,然后就可以使用strcmp()。

但在您的情况下,使用>会更好:)