我有这行代码
if(strcmp(ob[i].getBrand(), ob[j].getBrand()) > 0)
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误C2664:'strcmp':无法将参数1从'std :: string'转换为'const char*'
这是否意味着strcmp不能使用字符串,而是必须将其转换为char?
不要用strcmp.使用std::string::compare与...具有相同的行为strcmp.
if(ob[i].getBrand().compare(ob[j].getBrand()) > 0)
Run Code Online (Sandbox Code Playgroud)
或者更好
if(ob[i].getBrand() > ob[j].getBrand())
Run Code Online (Sandbox Code Playgroud)
通常,您应该std::string::compare在必须测试字符串不同的各种情况时使用,例如
auto cmp = ob[i].getBrand().compare(ob[j].getBrand());
if(cmp == 0) ...
else if(cmp > 0) ...
else if(cmp < 0) ...
Run Code Online (Sandbox Code Playgroud)
这样你只需要对字符串进行一次比较操作.
但是,在你的情况下,你显然只需要在一个案例中使用比较结果(我真的假设,因为我不知道给出的代码的上下文),那么operator >就足够了,并且很多眼睛更容易(大脑!).
| 归档时间: |
|
| 查看次数: |
1477 次 |
| 最近记录: |