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

Can strcmp() work with strings in c++?

本文关键字:处理 字符串 c++ strcmp      更新时间:2023-10-16

我有这行代码

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

我得到这个错误

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

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

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

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 >就足够了,并且更容易对眼睛(大脑!)。

如果getBrand()给出std::string,则使用>比较。

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

但在你的情况下,使用>是更好的:)