C++中string类型与char*类型的字符串比较剖析

C++中的string字符串可以直接进行比较,事实上strcmp()的两个参数是char*类型的,也就是说是比较C字符串的(即char数组),于是就不能用于比较string类型了

int strcmp( const char *string1, const char *string2 );

Value    Relationship of string1 to string2 
< 0       string1 less than string2 
 0        string1 identical to string2 
> 0       string1 greater than string2


但是string对象通过string类的方法  c_str() 就是可以进行比较的了  


string类型的直接比较  strcmp比较char*字符串或者是通过c_str()转换来的char*字符串  都是比较ASCII码  

如果直接比较char*字符串的话就会发现  是在比较内存中的位置,在前者较大


#include <iostream>
#include<cstring>
using namespace std;

int main()
{
    string s  = "abc";
    string s1 = "abd";

    if(s<s1)
    cout<<"string 类型 s = abc s1 = abd 直接比较   s小于s1"<<endl<<endl;

    if(strcmp(s.c_str(),s1.c_str())<0)
     cout<<"string 类型 s = abc s1 = abd 用c_str()转换成char*后strcmp比较 s小于s1"<<endl<<endl;

    cout<<"char* 数组比较"<<endl<<endl;

    char s2[10] = "abc";
    char s3[10] = "def";
    if(strcmp(s2,s3)<0)
    cout<<"strcmp比较  s2小于s3"<<endl<<endl;

    if(s2>s3)
    cout<<"直接比较s2大于s3,明显是按照地址先后进行比较的";
    return 0;
}

以上是例程



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值