我有这行代码

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

我得到这个错误



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

最佳答案

不要使用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 >就足够了,并且眼睛(大脑!)容易得多。

关于c++ - strcmp()可以在C++中使用字符串吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25360218/

10-10 02:20