string類型及其操作。


頭文件:string(無.h!)

 

string類的構造函數與析構函數:

1、string s;

2、string s(str);// copy str to s;

3.string s(str, strhead);//copy str to s from the strhead position

4.string s(str,strhead,strtail);//copy str to s from strhead to strtail

5.string s(cstr);//copy a c string to s;

6.string s(char*, char*len);//copy a c string from 0 to char*len to s;

7.string s(int n, char c); // s包含n個c字符

8s.~string();//銷毀所有字符,釋放內存。

 

字符串操作函數:

1.= or assign(),賦值函數

2.swap() // 交換兩個字符串。

3.+= or append or push_back()//在尾部加字符

4.insert()//插入字符

5.erase()//刪除字符

6.clear()//刪除全部字符

7.replace()//替換字符

8.+//串聯字符串

9.== != < <= > >= compare()//比較字符串

10. size(), or length(), //返回字符數量

11. max_size(), // 返回字符可能的最大數

12. empty()// 判斷字符串是否為空

13. capacity()//返回重新分配之前的字符容量

14. reserve()//保留一定量內存以容納一定數量的字符

15. [], at()//訪問單一字符

16. >>,getline()//從stream 中讀取某值

17.<<// 將某值輸出至stream

18.data(),// 將內容以字符數組形式返回

19. substr()//返回某個字符串

20. begin(), end()// 提供類似stl迭代器支持

21.rbegin(), rend()//逆向迭代器

22.get_allocator()//返回配置器

 

 

length()和size()等效。

調用:

string s = "hello";

cout<<s.length()<<endl;

輸出5\n

 

max_size():

調用:

string s;

cout<<s.max_size()<<endl;

輸出:1073741820\n

 

[],at():

調用:

string s = "hello";

有s[4] = 'o'.

s[s.length()]未定義,但是數據類型是const string時定義了,s[s.length()] = '\0'

 

compare():

調用:

string s = "abcd";

cout<<s.compare("abce")<<endl;

輸出-1\n;

 

assign():

調用:

string s = "hello";

s.assign("world");//將s賦值為world

s.assign(str, 1, 3);//將s賦值為str[1]~str[3]

s.assign(5,'x');//將s賦值為5個x

s.assign("nico", 5);//將s賦值為“nico\0",若整數大於字符串長度+1,則后續出現亂碼。

s.assign(str, 3, string::npos);//將s賦值為從str[3]開始直到末尾

 

append():

s+=str; or s.append(str);//在s尾部加入字符串。

s.append(str,1,3);//尾部加入str 的1~3位

其他和assign 解釋類似,就是用途改為添加。

 

insert():

string s = "hello";

s.insert(2,”aaaa");//s == "heaaaallo",即在1,2之間插入。

不支持插入單個字符,可以用字符串形式插入。

這個函數貌似比較復雜,待研究。

 

earse() & replace():

string s = "i99n";

s.replace(1,2,"nternatio");//把從索引1開始的兩個字符替換為最后的字符串,此時s="internation"

s.erase(2);//從索引2后全部刪除,此時s = "in"

s.erase(3,5);//從索引3開始往后刪除5個, s= "internn"

 

substr():

提取子串

s.substr();//返回s;

s.substr(11);//返回索引11以后的子串

s.substr(5,6);//返回索引5開始(就是包含索引5)的6個字符

 

查找搜索:

find(int first, int last, const type val)//從first 到last,返回第一個和val相等的元素的索引,無相同則返回last

rfind(int pos,const type val)//如果輸入了pos,則從pos開始不包括pos位置從后往前搜索,返回第一個和val相等的元素的索引,否則返回一個數(我測試時返回的是469427695),如果不輸入pos,則從末尾開始從后往前搜索。

find_first_of(),find_last_of(),find_first_not_of(),find_last_not_of(),見字面意思,與上面兩個函數類似。

 

string s = "hello"

cout<<s.find('l')<<endl;

輸出:2\n

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM