字符串比较== strcmp

strcmp是用来判断char类型的字符串是否相等的,char字符串实际上就是字符串的首地址。

而==是直接判断左边和右边是否相等,如果用==来判断char字符串的话,就是相当于比较他们的首地址,这当然无法判断字符串的值是否一致了。
而如果是std::string,因为已经重载了==运算符,所以可以直接用==进行比较。
另外std::string有const char
的构造函数,平时可以用string(“abc”) == “abc”是因为匹配string的==运算符时,后面的abc发生了隐式类型转换。

1
2
3
4
5
string a, b;
a = "hello";
b = "world";
if( a==b ) printf("a==b");
else printf("a!=b\n");

如果你不想这样做,也可以使用strcmp的方式:

1
2
3
4
5
6
string a, b;
a = "hello";
b = "world";
if( strcmp(a.c_str(), b.c_str())==0 ) printf("a==b");
else printf("a!=b\n");
33 48