頭文件: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