c++ 字符串相等比較

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章