c++ 字符串的相等比较(易错)
两种字符串格式char * 或者string 对象
1.如果要比较的对象是char *字符串
利用所在头文件string.h
int strcmp(const char* s1,const char *s2);
(1)当s1<s2时,返回负数;
(2)当s1==s2时,返回=0;
(2)当s1>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;