在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。
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;
}
输出结果: