c 風格字串和string型別的字串的異同

2021-08-08 15:54:54 字數 1003 閱讀 9712

c-風格字串的比較:

給大家先看乙個程式  

分析:strcmp()是c++庫中的函式,該函式接受兩個字串位址(指標、字串常量、字元陣列名等)作為引數,若兩個字串相同,該函式返回零,若第乙個字串按字母順序排在第二個字串之前,該函式返回乙個負數值,相反,則返回乙個正數。

c-風格的字串常量表示位址!!!這是最重要的

所以,word=="mate",這個關係式並不是判斷兩個字串是否相同,而是檢視他們是否儲存在相同的位址上。所以對c-風格的字串使用關係運算子來比較他們,會無法得到滿意的答案。

c-風格字串是以空字元null結束的字元陣列。

string型別的字串:

#include#includeusing namespace std;

int main()

{ string word="?ate";

for(char ch='a';word="mate");ch++)

{ cout結果:

分析:關係運算子「!=」左邊是乙個string物件,右邊是乙個c-風格的字串,string類過載了「!=」,讓我們能在下述條件下使用他:至少要給運算元是string物件,另乙個運算元可以是string物件,也可以是c-風格的字串。

注:第乙個程式,結果顯示和程式不一樣,是因為我後面把程式改了一下。

string和C風格字串

include include include include 雖然改變s後,仍然輸出正確,但是切記 無法保證c str 返回的陣列一直有效,保險做法是拷貝乙份 改進後 include include include include 雖然改變s後,仍然輸出正確,但是切記 無法保證c str 返回的陣...

string物件和C風格字串

我們都知道允許使用字串字面值來初始化string物件 string s hello world c 規定,任何出現字串字面值的地方都可以用以空字元結束的字元陣列來替代 上述性質反過來並不成立 如果程式的某處需要乙個c風格字串,無法直接用string物件來替代它。例如 不能使用string物件直接初始...

C風格字串與string

c風格字串並不是一種型別,它指的是一種程式設計習慣,指c語言中以 0 結尾的字串。c語言中沒有字串型別,通常用字串陣列來存放乙個字串 可以直接將乙個字串直接量 字面量 直接賦值給陣列 可以定義長度也可以不指定 編譯器會在字元陣列末尾自動的新增 0 作為串的結束符。用字串給字元陣列賦值時由於要新增結束...