我有这行代码
if(strcmp(ob[i].getBrand(), ob[j].getBrand()) > 0)
我收到此错误
错误C2664:'strcmp':无法将参数1从'std :: string'转换为'const char *'
这是否意味着strcmp不能使用字符串,而是必须将其转换为char?
答案 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()。
但在您的情况下,使用>
会更好:)