我有这行代码
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/