C++中string和char聲明字符串的異同和使用
- string類
- 必須在頭文件中包含
<string>
- 隱藏了字符串的數組性質,可以像處理普通變量那樣處理字符串
- string類位於名稱空間std中
- string是一個類,創建出的是一個對象
- 必須在頭文件中包含
操作(賦值,拼接,附加)
- 不能將一個數組賦給另一個數組,但可以將一個string對象賦給另一個string對象
char charr1[20];
char charr2[20] = "jaguar";
charr1 = charr2;//此操作不合法(相當於兩個首地址的賦值操作)
string str1;
string str2 = "panther";
str1 = str2;//此操作合法
- 可以使用連接運算符"+"將兩個string對象合並起來,還可以用"+="將字符串附加到string對象的末尾
- 此處的加號起連接作用,不是做加法的作用
- "+"在第一次碰到string對象之后起連接作用,之前作數字間的加法
string str3;
str3 = str1 + str2;//str3是 str1的內容后緊跟str2的內容 的合並數組。
//對應char字符串的strcpy(charr3,charr1);strcat(charr3,charr2);
str1 += str2;//str1后緊跟str2的內容
- 確定兩種字符串中字符數的方法
- char類型字符串可用頭文件
<cstring>
中的strlen(字符串名)
函數,該函數返回該字符串包含的字符數,不包含'\0' - string創建的對象可以用
對象名.size()
來確定。string str;
,str是一個string對象,size()是string類的一個方法,方法是一個函數
- char類型字符串可用頭文件
輸入輸出 I/O
-
string字符串在未被初始化前長度被自動設置為0,而char類型的字符串第一個'\0'出現的位置是不確定的,因此,strlen()獲取的長度不確定,甚至可以大於中括號中給定的長度
-
可以用cin>>來講輸入存儲到string對象中
-
可以使用cout<<來顯示string對象
-
每次讀取一行而不是一個單詞時使用的句法不同
-
讀入
-
將一行輸入讀入數組:
cin.getline(字符數組名,數組長度)
。這個getline()為istream類中的一個類方法,使用第二個參數避免超過數組的長度
-
將一行輸入讀取到string對象中:
getline(cin,string創建的對象名)
。可見,這個getline()沒有句點,表明這個getline()不是類方法,它將cin作為參數,指出到哪里去查找輸入,另外,也沒有指出字符串長度的參數,因為string對象將根據字符串的長度自己調整自己的大小
istream類中,有處理double,int,和其他基本元素的類方法,但沒有處理string對象的類方法
-
cin>>輸入一個string對象可行是因為使用string類的一個友元函數
-