c++ 字符串相等比较

31 篇文章 1 订阅
16 篇文章 0 订阅

比较两个char*字符串 或 string对象是否相等 c\c++

1. 如果要比较的对象是char*字符串
利用:

int strcmp(const char* s1,const char* s2);

(1) 当s1 < s2时,返回负数;
(2) 当s1 == s2时,返回值 = 0;
(3) 当s1 > s2时,返回正数。

所在头文件:string.h

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。如:
“A”<”B”
“a”>”A”
“computer”>”compare”

特别注意:strcmp(const char s1,const char s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

2. 如果要比较的对象是两个string,则利用函数compare() 或者 ==
若要比较string s1和s2则写为:

s1.compare(s2)

若返回值为0,则两者相等。

3. 注意

(1) 在比较两个字符串时不能利用符号“==”,“==”符号比较的是两个字符串的地址是否相等。
(2) 若是比较两个字符,则可以用”==”直接进行比较~
(3) 但在比较两个string对象时是可以利用“==”的,相等的话,则表达式的返回值为1,不等为0。

举个简单的例子:

#include<iostream>  
#include<string>  

using namespace std;  

int main() {  
    char a[] = "aaa",b[]="aaa";  
    string A = "AAA", B = "AAA";  
    cout <<"*a和*b的值分别是:" <<*a << "," << *b << endl;  
    cout <<"*“aaa”的值是:"<< *"aaa" << endl;  

    //错误的比较方法:
    cout <<"利用 == 比较a,b两个字符串,结果是(相等为1,不等为0):" <<(a==b) << endl;  

    //正确的比较方法:
    cout << "利用strcmp()比较a,b两个字符串,结果是(相等为0,不等非0):"<<strcmp(a,b) << endl;  
    cout << "利用 == 比较A,B两个string,结果是(相等为1,不等为0):"<<(A==B) << endl;  
    cout << "利用compare()比较A,B两个string,结果是(相等为0,不等非0):" << A.compare(B) << endl;  

    return 0;  
}  

 

输出结果:

这里写图片描述

 

4、char*字符串:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。

#include<string.h>
#include<stdio.h>
main()
{
char *string1=”needle in haystack”;
char *string2=”hay”;
printf(“%sn\n.”strstr(string1, string2);
return 0;
}


输出:

haystack

 

  • 54
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值