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當中,...