比較兩個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