strcmp()可以在c++中处理字符串吗?
Can strcmp() work with strings in c++?
我有这行代码
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()。
但在你的情况下,使用>
是更好的:)
相关文章:
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 是否可以在c++中处理字符串流中的各个元素
- 如何以这种方式处理字符串数组
- 在C /Fortran Interop中处理字符串的官方方法是什么?
- 如何在处理C++字符串时使用内存集
- 当我们使用字符串而不是字符数组时如何处理字符串的字符
- 在处理 C 字符串时,如何将用户的第一个输入替换为当前输入
- 为什么 string.length()=0 在使用 string[i] 处理字符串后
- Qt究竟是如何处理字符串的,或者如何生成填充数字
- 处理字符串时出现超级奇怪的错误
- STXXL处理字符串
- FSNF 无法正确处理字符串
- 未定义的引用C++队列模板处理字符串
- 与Arduino处理字符串的方式混淆
- 如何让 atoi() 函数处理字符串
- 我似乎无法让 v.push.back() 处理字符串
- 使用指针处理字符串
- 使用MMX指令处理字符串
- strcmp()可以在c++中处理字符串吗?
- 试图像字符数组一样填充一个字符串,但它只是处理字符串中的第一个字符