我有这行代码
if(strcmp(ob[i].getBrand(), ob[j].getBrand()) > 0)
我收到这个错误
错误 C2664:“strcmp”:无法将参数 1 从“std::string”转换为“const char *”
这是否意味着 strcmp 不能处理字符串,而是必须将其转换为 char?
不要使用strcmp
. Use 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 >
就足够了,而且对眼睛(大脑!)来说更容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)