string類是不可變(final)的,對string類的任何改變,都是返回乙個新的string類物件.這樣的話把string類的引用傳遞給乙個方法,該方法對string的任何改變,對原引用指向的物件沒有任何影響,這一點和基本資料型別相似.
//這樣操作之後s1是"abc",s2是"def".
a 和 b 是不是指向同乙個位址呢,這個問題在各論壇都是談論很激烈,其實很簡單,跟下這些字串的記憶體位址就好了
c++stl提供了string基本字元系列容器來處理字串,可以把string理解為字串類,它提供了新增、刪除、替換、查詢和比較等豐富的方法。
string基本操作函式定義:
#include#includeusing namespace std;
string::iterator it;
//定義迭代器變數
string s,childs;
/*尾部新增字元*/
s+=childs;
/*刪除字元*/
int num,num1,num2;
it=begin;
s.erase(it+num);
//刪除第num個元素,陣列從0開始計數
s.erase(it+num1,it+num2);
//刪除第num1到num2區間所有元素,陣列從0開始計數
/*返回字串長度*/
s.length();
/*替換string物件的字元*/
int n;
int num;
s.replace(n,num,childs);
//從第n個開始將連續的num個字元替換為childs字串
/*搜尋子串或字元,查詢到返回下標值,查詢不到返回4294967295*/
s.find(childs);
/*string物件的比較*/
s.compare(childs);
//返回-1則schilds
/*反向排序string*/
reverse(s.begin(),s.end());
scanf的輸入速度比cin快很多
scanf()是c語言的函式,不支援string物件
1、從string物件尾部新增字元:
(1)直接採用"+"操作符,**如下:
#include#includeusing namespace std;
int main()
} if(ch==9){
reverse(s.begin(),s.end());
cout<
C 之string基本字元系列容器
string基本字元系列容器 c語言只提供了乙個插入型別用來處理字元,而對於字串,只能通過字串陣列來處理,顯得十分不便.c stl提供了string基本字元系列容器來處理字串,可以把string理解為字串類,它提供了新增,刪除,替換,查詢和比較等豐富的方法.雖然使用vector這樣的向量也可以處理字...
String基本字元系列容器
1 建立s 空字串 include include include include include include include includeusing namespace std int main string s cout 2 基本字元系列容器給string物件賦值 直接給字串物件賦值 in...
string基本字元系列容器 一
由於c語言中只提供了乙個char型別用來處理字元,對於字串的處理,我們往往都是通過字元陣列來處理的,這有些時候還是很不方便的。其實vector就和char型別的陣列很像,vector就是字串型別的陣列了。1.1 建立乙個string型別的物件 下面的 建立了乙個字串物件s,且s是乙個空串,他的長度是...