判斷字串相等

2022-08-09 07:51:06 字數 2450 閱讀 1788

1 #include 2 #include //

support for strcmp(),也可寫成#include "string.h"

3using

namespace

std;45

intmain()6;

10char str4[4] = "

abc";//;11

string str5 = "

abc";12

string str6 = "

abc"

;13 cout<<&str3<<"

"<<&str4<14 cout<<&"

abc"

<<"

"<<&"

abc"

<<"

"<<&"

abc"

<15 cout<<"

str1 == str2:

"<<(str1 == str2)<16 cout<<"

*str1 == *str2:

"<<(*str1 == *str2)<17 cout<<"

str3 == str4:

"<<(str3 == str4)<18 cout<<"

str3 > str4:

"<<(str3 > str4)<19 cout<<"

strcmp(str3,str4):

"char陣列標準的判斷相等函式

20 cout<<"

str5 == str6:

"<<(str5 == str6)<21/**22

輸出:23

0x28fe92 0x28fe8e

240x47f000 0x47f000 0x47f000

25str1 == str2: 1

26*str1 == *str2: 1

27str3 == str4: 0

28str3 > str4: 1

29strcmp(str3,str4): 0

30str5 == str6: 1

31*/

3233

return0;

34}35/**36

strcmp()函式解析:

3738

標頭檔案:#include

3940

strcmp() 用來比較字串(區分大小寫),其原型為:

41int strcmp(const char *s1, const char *s2);

4243

【引數】s1, s2 為需要比較的兩個字串。

4445

字串大小的比較是以ascii 碼表上的順序來決定,此順序亦為字元的值。

46strcmp()首先將s1 第乙個字元值減去s2 第乙個字元值,

47若差值為0 則再繼續比較下個字元,若差值不為0 則將差值返回。

48例如字串"ac"和"ba"比較則會返回字元"a"(65)和'b'(98)的差值(-33)。

4950

【返回值】若引數s1 和s2 字串相同則返回0。s1 若大於s2 則返回大於0 的值。s1 若小於s2 則返回小於0 的值。

5152

*/

(1)str1和str2是char*,也就是乙個指標,然後它們都來自於"abc"的賦值,通過直接輸出"abc"的位址可以發現都是相等的,因為它是乙個const string,存放在全域性資料區當中,對str1和str2的初始化,c++只會建立乙個"abc" const string,從而str1和str2這兩個指標指向的是同一塊記憶體,也就是說str1和str2的值(是那塊同樣的記憶體的位址值)是相等的,於是str1 == str2就解釋得通了。

(2)*str1 ==  *str2因為取的是同一塊記憶體裡面的東西,自然也是相等。

(3)再看char陣列,無論是

char str3 = "abc";

還是char str3 = ;

其過程都是將元素逐一複製到str3陣列當中,它並不存在指標指向乙個const string一說,並且str3表示的是陣列的首位址,同理str4.直接拿str3 == str4來作比較,也即拿這兩個char陣列的首位址的值來比較,自然是不相等的,str3陣列的首位址比str4的首位址要大,也就是str3 > str4返回的是1(true),所以注意這裡是拿它們的位址來作比較。

c語言之記憶體四區模型和函式呼叫模型

(4)來到strcmp函式,這個函式是用來比較兩個char *字串的大小,如果兩個字串相等則返回0,前面的比後面的大則返回1,反之則返回-1,所以用這個函式才能判斷出str3和str4代表的字串是相等的,前面的只是拿位址來比較,而不是內容的比較。因為在c語言中,char陣列(c風格字串)並不支援直接使用==來判斷字串相等,需要呼叫函式才能達到目的。

(5)至於string,跟(1)差不多的原理,而且c++的string本來就支援直接使用「==」來比較兩個字串是否相等(運算子過載的支援)。

js判斷字串是否相等

兩個字串匹配一般使用 或者 判斷,其不同是 1.equality 等同,identity 恒等。2.兩邊值型別不同的時候,要先進行型別轉換,再比較。3.不做型別轉換,型別不同的一定不等。匹配 不同型別間比較,之比較 轉化成同一型別後的值 看 值 是否相等var str1 a var str2 b v...

php 中文相等 php判斷字串是否相等

同上,但是不區分大小寫 int strcasecmp string str1,string str2 按 自然排序 進行比較 int strnatcmp string str1,string str2 同上,但是不區分大小寫 int strnatcasecmp string str1,string ...

hash equals 判斷 字串值是否相等

是可防止時序攻擊的字串比較,那麼什麼是時序攻擊呢?比如這段 我們使用 verifydata code request verification code進行比較,那麼兩個字串是從第一位開始逐一進行比較的,發現不同就立即返回 false,那麼通過計算返回的速度就知道了大概是哪一位開始不同的,這樣就實現...