2013-02-26 27 views
-2

如果我的字符串input1234567890,我做到以下幾點:如果第二個參數是「0」,C++中的strcmp是否檢查字符串中的每個值?

(strcmp(input,"0")) 

意志回報1如果在1234567890我的字符數組0和0,如果有沒有?

我知道我可以測試這個,我做了,答案是肯定的,但我不知道爲什麼,我無法在strcmp上找到絕對的細節。

+0

'strcmp'是比較函數,而不是搜索函數。也許看看手冊頁(也可以在線,例如http://linux.die.net/man/3/strcmp) – jogojapan 2013-02-26 02:05:14

+2

我認爲你對'strcmp()'和'strchr()'很迷惑。否:只有當字符串相同(內容和寬度)時,strcmp()纔會返回「0」。否則,返回小於-1的「-1」或大於1的返回值。 – paulsm4 2013-02-26 02:05:21

+0

*我知道我可以測試這個,我做了,答案是肯定的*真的嗎?你可能想重新運行測試.. – 2013-02-26 04:09:30

回答

0

strcmp如果兩個字符串相同則返回0,否則返回非0。 看起來你甚至沒有打擾谷歌!

+0

我在問,因爲在註釋掉的一段代碼中它說「檢查字符串是否爲0」,並且代碼是else else(strcmp(input,「0」)= = 0){返回值; } \\檢查字符串是否爲0。「字符串是」1234567890「。 – eveo 2013-02-26 02:06:56

+0

谷歌「C++ strcmp」 – John3136 2013-02-26 02:08:53

+0

@eveo:通過「有0」的評論必須意味着「具有文本'0'」,而不是「包含0某處」...顯然是一個不幸的含糊不清的評論。 – 2013-02-26 02:14:19

0

不,它比較兩個字符串。

strcmp()僅當兩個字符串相同時才返回0。否則,返回值說明有關第一個不匹配的字符。

就你而言,這與'1'和'0'之間的比較有關。它沒有區別,其他字符串在最後有一個'0'。

0

strcmp()通常會檢查從第一個到最後一個的所有字符,或直到兩個字符串中出現不匹配。

strcmp()的確切內部實現,如果您詢問的話,在語言標準中沒有指定。從理論上講,它可以找到兩個字符串的長度,如果它們相等,則比較使用大於char的單位的字符串,甚至做相反的處理。

strcmp()比較字符串,而不是搜索另一個。如果字符串相同,它將返回0。否則,它將返回正值或負值,表示第一個不匹配字符(字符值被視爲無符號值)之間差異的符號。

0

是否strcmp的在C++中的字符串檢查每一個值如果第二 參數爲「0」

不,它不需要,strcmp()是一個字符串比較功能用來檢查是否一個字符串等於另一個。如果是,則返回0,如果一個字符串通常大於另一個字符串,則返回1,否則返回-1

要檢查它是否存在,我建議你爲此編寫自己的函數。

//return 1 if if the character exists, 0 otherwise 
int DoesCharExist(const char *pData, char character) 
{ 
    char *data = pData; 
    while(*data++){ 
    if(*data == character) return 1; 
    } 
    return 0; 
} 
相關問題