string類是c++中常用的乙個針對字串管理所設計的的字串類
1.常見的string類構造介面
string()
//構造乙個空的string類物件
string
(const
char
* s)
//以c格式的字串,來構造出乙個string類物件
string
(size_t n,
char c)
//用n個字元c來構造乙個string類物件
string
(const string& s)
//拷貝構造
string
(const string& s,pos n)
//從物件s的位置n起拷貝構造出新的string類物件
用法示例
int
main()
2.string類物件的容量操作函式
size_t size()
const
//返回字串有效長度
size_t length()
const
//同上 //size與length原理相同
size_t capacity()
const
//返回物件空間大小
bool empty()
const
//判空,空返回true即(1),非空返回false(0)
void
clear()
//清空有效字元//但不改變其空間大小
void
resize
(size_t n,
char c)
//將物件的有效字串個數改為n個,剩餘的用字元c填充
void
resize
(size_t n)
//同上,但剩餘個數使用0進行填充
void
reserve
(size_t n)
//為物件預留空間
注意:
1.resize在改變物件有效個數時,如果是將有效元素個數增大,有可能導致物件底層容量(即capacity)的增大,但若將有效元素減少,則不會不會引起容量的變化。
2.reserve為物件預留空間時,不會改變物件的有效個數。當其引數大於原空間時會擴容至引數大小,但因為考慮到記憶體對齊,其實際可能比引數要大上一點,如果是一點一點的增加物件的有效個數所導致的增容,reserve大概會按1.5倍的方式進行增容;當引數小於原空間大小時,則不會改變物件容量大小。
3.訪問操作
char
& operator[
](size_t pos)
//返回物件pos位置處的字元,非const物件呼叫
const
char
& operator[
](size_t pos)
const
//同上,const物件呼叫
用法示例
//一般會用在遍歷字串中
intmain()
cout/範圍for遍歷
//底層會被替換為迭代器
for(
auto ch : s)
cout << endl;
//迭代器遍歷
//string::reverse_iterator //反向迭代器
//string::const_reverse_iterator //反向const迭代器
string:
:iterator it = s.
begin()
;while
(it != s.
end())
cout << endl;
return0;
}
4.修改操作
void
push_back
(char c)
//尾插字元c
string&
(const
char
* s)
//追加乙個字串s
string& operator+=(
const string& str)
//追加乙個string類物件str
string& operator+=(
const
char
* str)
//追加乙個字串
string& operator+=(
char c)
//追加字元c
const
char
*c_str()
const
//返回c格式的字串
size_t find
(char c,size_t pos=0)
//從pos位置開始找字元c,不給pos預設從開始找,返回c的位置
size_t rfind
(char c,size_t pos=npos)
//從pos位置開始往前找字元c,並返回其位置,npos為字串最後乙個位置,也就是說其預設從最後乙個開始找
string substr
(size_t pos=
0,size_t n=npos)
const
//從pos位置開始,往後擷取n個字元,然後返回//預設從pos位置開始往後擷取完字串為止
string erase
(size_t begin,size_t end)
//刪除字串[begin,end]位置之間的元素,並返回刪除之後的字串
注意:
1.對string物件進行操作時,最好將其空間用resere()預留好,以防止增容帶來的不必要開銷。
2.對string物件追加字串或字元時,推薦使用+=,可讀性高,功能齊全。
//find(),substr()的用例示範
intmain()
5.string類的非成員函式
operator>>
//輸入運算子過載
operator<<
//輸出運算子過載
getline //獲取一行字串,遇到空格不結束,換行結束
relational operators //大小比較
實現前首先要了解,string類物件中儲存的是指標,在指標指向的陣列中儲存字元,要保證字元的結尾必須有』\0』的存在。
以下對其構造,拷貝構造,賦值運算子過載和析構函式的簡單實現。
class
my_string
_str =
newchar
[strlen
(str)+1
];//上倆句保證讓string(nullptr),也能構造出乙個空物件
strcpy
(_str, str);}
//拷貝構造
string
(const string& s)
:_str
(new
char
[strlen
(s._str)+1
])//賦值運算子過載
string&
operator=(
const string& s)
return
*this;}
//析構
~string()
}private
:char
* _str;
}
測試:
int
main()
String類函式簡講
1.構造 b string s str 拷貝建構函式 生成str的複製品 c string s str,stridx 將字串str內 始於位置stridx 的部分當作字串的初值 d string s str,stridx,strlen 將字串str內 始於stridx且長度頂多strlen 的部分作...
常用類 String類
string類概述 字串是由多個字元組成的一串資料 字串行 字串可以看成是字元陣列 構造方法 public string public string byte bytes public string byte bytes,int offset,int length public string cha...
String常用介面 find,replace
findsize t find const string str,size t pos 0 const 從字串string的pos位置,開始查詢子串,返回子串第一次出現的首字元位置,沒有找到的話返回string npos int main 結果 13size t find char c,size t...