close

按此前往C++完整教學目錄

 

 

 

一、字串、傳統字串、C++字串

1. 字元的宣告:

char 字元名稱 = ‘字元值’; ,如:

char a=’b’;

cout<<a; //顯示b

2. 傳統字串即是由字元所組成的陣列:

char a[]="make a string";

cout<<a;  //顯示make a string

 

 

二、C++字串的使用

因字串(string)是在std命名空間中,故要在C++中使用,需先在開頭寫下:

using namespace std;

using std::string;

1. 字串的建構與複製:字串的建構有許多種方法如下:

(1) string 字串名稱(n,’某字元’);:此字串之內容為n個某字元。例:

string op(5,'w');

cout<<op<<endl; //顯示 wwwww

(2)string 字串名稱一(字串名稱二);:將字串二複製給字串一。例:

string tt="I visit weiwei";

string op(tt);

cout<<op<<endl; //顯示I visit weiwei

(3) string 字串名稱一(字串名稱二 , n1 , n2);:將字串二下標n1開始,連續n2個字元複製給字串一。例:

string tt="I visit weiwei";

string op(tt, 8,6);

cout<<op<<endl; //顯示weiwei

 

2. 字串中字元的指定:

(1) 利用下標運算子[]

string tt="I visit weiwei";

cout<<tt[0]<<endl;  //顯示I

cout<<tt[1]<<endl;  //顯示空格。空格也算是一個字元。

cout<<tt[2]<<endl;  //顯示v

(2) 利用成員函式at(),並在括號中輸入索引值:

string tt="I visit weiwei";

cout<<tt.at(0)<<endl;  //顯示I

cout<<tt.at(1)<<endl;  //顯示空格

cout<<tt.at(2)<<endl;  //顯示v

 

3. 利用成員函式assign(),將字串宣告後再指派值。括號內的程式碼意義同於建構或複製建構:

string op,tt="I visit weiwei";

op.assign(5,'a');

cout<<op<<endl; //顯示 aaaaa 

 

4. 字串與字串可以用比較運算子==!=>=<=><來進行比較。乃是從雙方的第一個字元之ASCII的大小比較起。也可以使用成員函式compare()進行比較:字串一.compare(字串二);,若字串一大於字串二則回傳1,若字串二大於字串一則回傳-1,若兩者相等則回傳0。如下例:

string a="aaa",b="bbb",c="ccc";

cout<<b.compare(c)<<endl;  //顯示 -1

cout<<b.compare(a)<<endl;  //顯示 1

cout<<b.compare(b)<<endl;  //顯示 0

 

5. 字串的合成與插入:

(1) 利用加法運算子+

string a="aaa",b="bbb",c="ccc";

a=a+b+"kkk";cout<<a<<endl; //顯示 aaabbbkkk

也可以利用+=運算子來疊加字串:

string a="aaa",b="bbb",c="ccc";

a+="qqq";cout<<a<<endl;  //顯示 aaaqqq

(2) 利用成員函式append()(註:append 此一英文單字的意思是附加”)

(2-1) 字串名稱一.append(字串名稱二);,將字串二附加在字串一的末端。如:

string a="aaa",b="bbb",c="ccc";

a.append(b);

cout<<a<<endl;  //顯示aaabbb

(2-2) 字串名稱一.append(字串名稱二 , n1 , n2);,將字串二從索引n1數起的n2個字元附加在字串一的末端。如:

string a="aaa",b="bbb",g="gggGGGggg";

a.append(g,1,7);

cout<<a<<endl;  //顯示aaaggGGGgg

(2-3) 字串名稱.append(n,’某字元’);,將n個某字元附加在字串一的末端。

3. 利用成員函式insert(),可插入字串:

(3-1) 字串一名稱.insert( n , 字串二名稱);,可將字串二整個插入字串一在索引n的位置。如:

string a="aaaaaa";

string b="ng";

a.insert(2,b);

cout<<a<<endl;  //顯示aangaaaa

(3-2) 字串一名稱.insert( n , 字串二名稱 , n1 ,n2);,可將字串二在索引n1之後的n2個字元插入字串一在索引n的位置。如:

string a="aaaaaa";

string b="12345678";

a.insert(2,b,2,5);

cout<<a<<endl;   //顯示aa34567aaaa

(3-3) 字串一名稱.insert( n , n1 , ‘某字元’);,可將n1個某字元插入字串一在索引n的位置。如:

string a="aaaaaa";

a.insert(3 , 3 ,'g');

cout<<a<<endl;   //顯示aaagggaaa

 

6. 其他常用函式:

字串名稱.size();:回傳字串的字元數目。

字串名稱.length();:回傳字串的字元數目。

字串名稱.empty();:若字串為空,回傳true,否則回傳false

swap(字串名稱一 , 字串名稱二);:將字串一與字串二的內容對調。

 

 

上一篇:函式參數

下一篇:子字串 substring

arrow
arrow
    創作者介紹
    創作者 埃伯 的頭像
    埃伯

    程式語言教學

    埃伯 發表在 痞客邦 留言(2) 人氣()