|
直接操作字元陣列來進行字串操作是比較低階的行為,就如之前所說的,陣列本身對自己的長度沒有意識,所以無法判斷自己是否為空字串,而陣列也不能直接指定
給另一個陣列,所以您無法直接將字串指定給另一個字串,您也無法對兩個字串直接進行串連的動作,例如: char
str1[] = "text1";
char str2[] = "text2"; str1 = str2; // error cout << str1 + str2 << endl; // error C++標準函式庫提供了string類別,您可以使用這個類別來建立實例,並進行各項高階的字串抽象行為,像是字串的指定、串接等,要使用string類 別,您要先含入string表頭檔: #include
<string>
您可以使用三種方式來建立一個string類別的物件(object),例如: string
str1; // 建立一個string物件,內容為空字串
string str2("caterpillar"); // 以字串常量建立字串 string str3(str2); // 以string實例建立字串 第一個建構字串的方法會建立一個空字串,空字串也是字串,只是長度為0;第二個方法會以字面常量內容來建立string實例;第三個方法會「複製」 str2的內容,並建立一個新的string實例。 您可以使用size()來測試字串長度,使用empty()來測試字串是否為空,使用==來比較兩個字串的字元內容是否相同,例如: #include <iostream> 執行結果:
您可以將字串指定給另一個字串,例如: string
str1("text1");
string str2("text2"); .... str1 = str2; 這個指定會將str1原本的字串記憶體空間釋放,並重新配置足夠容納str2的記憶體空間,然後將str2的各個字元複製至str1;您也可以將一個C- Style的字串指定給string,例如: string
name("caterpillar");
char str[] = "justin"; name = str; 但是您不能將一個string實例指定給字元陣列,例如: char
str[] = "justin";
string
name("caterpillar");
str = name; // error 您也可以直接使用+運算子來串接字串,例如: str1
= str1 + str2;
str1 = str1 + "\n"; string的實例可以使用下標運算子[ ]指定索引來存取相對應位置的字元,就有如字元陣列的操作一般,例如: #include <iostream> 執行結果:
string類別所生成的物件擁有幾個常用的方法(method),例如: #include <iostream> 執行結果:
以下簡單的說明上面幾個使用到的方法:
以上的幾個方法都是重載(Overload)多次的方法,另還有其它的方法,例如compare()等等,更多的參數與方法使用請參考C++相關線上文 件。 |