strcmp() 可以在 C++ 中处理字符串吗?

2023-12-05

我有这行代码

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(使用前将#替换为@)

strcmp() 可以在 C++ 中处理字符串吗? 的相关文章

随机推荐