知識梳理 string類

2021-10-08 13:54:21 字數 3977 閱讀 9558

string類是模板類:typedef basic_string<

char

> string;

使用string類要包含標頭檔案

string物件的初始化:

string s1

("hello");

string month=

"month"

; string s2(8

,' x'

);

錯誤的初始化方法

string e1=

'c';

//error,不能直接用字元去初始化

string e2

('u');

//error

string e3=22;

//error,不能直接用數字去初始化

string e4(8

);//error

可以將字元賦值給string物件

string s;

s='n'

;//ok

(

1)string物件的長度用成員函式length

()讀取:

string s

("hello");

cout

<)string支援流讀取運算子:

string stringobject;

cin>>stringobject;(3

)string支援getline函式:

string s;

getline

(cin,s)

;//讀取一整行到s中

string的賦值和連線

(

1)用=賦值

string s1

("cat"

),s2;

s2=s1;(2

)用assign成員函式賦值

string s1

("cat"

),s3;

s3.assign

(s1);(

3)用assign成員函式部分賦值

string s1

("catpig"

),s3;

s3.assign

(s1,1,

3);//從s1中下標為1的字元開始賦值3個字元(4

)單個字元複製:s2[5]

=s1[3]

='a';(

5)逐個訪問string物件中的字元:

string s1

("hello");

for(

int i=

0;ilength()

;i++

) cout

<成員函式at會做範圍檢查,如果超出範圍會丟擲out_of_range異常,而下標運算子[

]不會做範圍檢查。(6

)用+運算子連線字串

string s1

("good"),

s2("morning!");

s1+=s2;

cout

(s2)

; s2.

(s1,

3,s1.

size()

);//下標為3開始,s1.size()個字元,如果字串內沒有足夠字元,則複製到字串最後乙個字元

比較string

(

1)用關係比較符比較string的大小:==

,>=

,<=,!=

,>

,<

,返回值都是bool型別(2

)用成員函式compare比較string的大小:

string s1

("hello"),

s2("hello");

int f1=s1.

compare

(s2)

;//相等返回0,s1大返回1,s1小則返回-1

int f2=s1.

compare(1

,2,s3,0,

3);//部分比較,將s1下標為1開始的兩個字元和s3下標從0開始的三個字元比較

子串substr

string s1

("hello world"

),s2;

s2=s1.

substr(4

,5);

//下標4開始的連續5個字元

交換string

s1.

swap

(s2)

;//成員函式swap,交換兩個字串內容

尋找string中的字元

成員函式find()

s1.find

("lo");

s1.find

("ll",2

);//從下標2開始查詢

在s1中從前向後查詢,「lo」第一次出現的地方,如果找到返回"lo"開始的位置,即l所在的位置下標。如果找不到,返回string::

npos

(string中定義的靜態常量)

成員函式rfind()

:剛好相反,從後往前找

成員函式find_first_of():

s1.find_first_of

("abcd");

在s1中從前向後查詢,「abcd」中任何乙個字元第一次出現的地方,如果找到則返回字母的位置找不到則返回string::npos;

成員函式find_last_of

()作用剛好相反

刪除string中的字元

(

1)成員函式erase()

: s1.

erase(5

);//刪除下標5及之後的字元

替換string中的字元

成員函式replace()

: s1.

replace(2

,3,"haha");

//將s1中下標2開始的三個字元換成"haha"

在string中插入字元

成員函式insert()

: s1.

insert(5

,s2)

;//將s2插入s1下標5的位置

s1.insert(2

,s2,5,

3);//將s2中下標5開始的3個字元插入到s2中下標2的位置

*轉換成c語言char 字串

成員函式 c_str()

: s1.

c_str()

;//返回傳統的const char *型別的字串,且該字串以"\0"結尾

成員函式data()

:const

char

*p1=s1.

data()

;返回乙個char *型別的字串,對s1的修改可能會使p1出錯

for(

int i=

0;ilength()

;i++

)printf

("%c",*

(p1+i)

);

字串流處理

除了標準流和檔案流輸入輸出外,還可以從string進行輸入輸出。

類似istream和ostream進行標準輸入輸出,我們用istringstream和ostringstream進行字串上的輸入輸出,也稱為記憶體輸入輸出。

#include

#include

#include

類 知識梳理

建立類 下面是通過乙個例項來進行知識點小結。class dog def init self,name,age self.name name self.age age defsit self print self.name.title is now sitting.def roll over self...

知識梳理 3 10演算法類

快速排序,選擇排序,希爾排序,氣泡排序 快速排序 快速排序 var quicksort function arr var pivotindex math.floor arr.length 2 基準位置 理論上可任意選取 var pivot arr.splice pivotindex,1 0 基準數 ...

知識梳理 UI 框架類們

1.五種常用的layout布局 linearlayout 順序布局 優勢 可根據weight進行比例布局,劣勢 不能激動靈活的將元件放到恰當的位置上 總結,linearlayout適合搭框架和根據比例描畫,能很好的適配各種尺寸的螢幕,不擅長擺放內部元件,但是如果將其放入scrollorview當中,...