日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

C++——String类超详细介绍

發(fā)布時(shí)間:2023/11/27 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++——String类超详细介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(歡迎及時(shí)指正錯(cuò)誤!謝謝)

STL的含義:標(biāo)準(zhǔn)模板庫

STL的內(nèi)容:

  • 容器:數(shù)據(jù)的倉庫
  • 算法:與數(shù)據(jù)結(jié)構(gòu)相關(guān)的算法、通用的算法(和數(shù)據(jù)結(jié)構(gòu)無關(guān))

注:熟悉常用的算法 sort? reverse

  • 迭代器:算法和容器的連接
  • 適配器:類似于轉(zhuǎn)接線,蘋果線要連接安卓線

容器:

序列式容器(線性結(jié)構(gòu))

string:

array:C11靜態(tài)順序表

vector:動(dòng)態(tài)順序表

list:帶頭節(jié)點(diǎn)的雙向循環(huán)鏈表

deque:動(dòng)態(tài)二維數(shù)組

forward_list:帶頭結(jié)點(diǎn)的循環(huán)單鏈表

stack:棧

queue:隊(duì)列

String類:按照類的方式進(jìn)行動(dòng)態(tài)管理字符串

底層:是一種順序表的結(jié)構(gòu),元素是char類型的字符


string類的常用構(gòu)造函數(shù):

  • string? str——構(gòu)造空的string類對象,即空字符串
  • string str(str1)——str1 和 str 一樣
  • string? str("ABC")——等價(jià)于 str="ABC"
  • string? str("ABC",strlen)——等價(jià)于 "ABC" 存入 str 中,最多存儲 strlen 個(gè)字節(jié)
  • string? str("ABC",stridx,strlen)——等價(jià)于 "ABC" 的stridx 位置,作為字符串開頭,存到str中,最多存儲 strlen 個(gè)字節(jié)
  • string? str(srelen,'A')——存儲 strlen 個(gè) 'A' 到 str 中
//用法小實(shí)例
#include<iostream>
using namespace std;int main() {string s1;   //空字符串string s2(10,'$');  //十個(gè) $string s3("hello world");  //hello wordcout << s3.size << endl;cout << s3.length << endl; //都是求字符串長度  11cout << s3.capacity << endl; //求s3的容量s3.clear();  //清空string s4(s3); //s4 和 s3一樣
}

注:使用string類時(shí),必須包含頭文件以及using namespace std。


string常用成員函數(shù):

assign函數(shù):

  • str.assign("ABC")——清空字符串,并設(shè)置為 "ABC"
  • str.assign("ABC",2)——清空字符串,并設(shè)置為"AB",保留兩個(gè)字符
  • str.assign("ABC",1,1)——清空字符串,設(shè)置為 "ABC" 中的從 位置1 開始,保留 1個(gè) 字符
  • str.assign(5,'A')——清空字符串,然后字符串設(shè)置為 5個(gè) 'A'

  • str.length()——求字符串長度
  • str.size()——和 length() 一樣
  • str.capacity()——獲取容量,包含了不用增加內(nèi)存就能使用的字符數(shù)
  • str.reasize(10)——設(shè)置當(dāng)前 str 的大小為10,若大小大與當(dāng)前串的長度,\0 來填充
  • str.reasize(10,char c)——設(shè)置當(dāng)前 str 的大小為10,若大小大與當(dāng)前串的長度,字0符c 來填充
  • str.reserve(10)——設(shè)置str的容量 10,不會(huì)填充數(shù)據(jù)
  • str.swap(str1)——交換 str1 str 的字符串
  • str.push_back('A')——在str末尾添加一個(gè)字符? 'A' ,參數(shù)必須是字符形式
  • str.append("ABC")——在str末尾添加一個(gè)字符串 "ABC",參數(shù)必須是字符串形式

insert函數(shù)方法:?

  • str.insert(2,3,'A')——在str下標(biāo)為2的位置添加 3個(gè) 字符'A'
  • str.insert(2,"ABC")——在str下標(biāo)為2的位置添加 字符串 "ABC"
  • str.insert(2,"ABC",1)——在str下標(biāo)為2的位置添加 字符串 "ABC" 中 1個(gè) 字符
  • str.insert(2,"ABC",1,1)——在str下標(biāo)為2的位置添加 字符串 "ABC" 中從位置 1 開始的 1 個(gè)字符

注:上個(gè)函數(shù)參數(shù)中加粗的 1 ,可以是?string::npos,這時(shí)候最大值,從 位置1 開始后面的全部字符

  • str.insert( iterator pos, size_type count, CharT ch )——在 str 中,迭代器指向的 pos位置 插入 count個(gè) 字符 ch

s4.insert(++str1.begin(),2,'a'); ? ? ?? 結(jié)果:s4:ABCD ?? -> ?? AaaBCD

  • str.insert( iterator pos, InputIt first, InputIt last )——在 str 中,pos位置 插入 str1 的 開始位置 到 結(jié)束為止

s4.insert(s4.begin(),str1.begin(),str1.end()); ? ? ? ?結(jié)果:s4:ABCD? str1:abc ? -> ?? abcABCD


  • str.erase(2)——?jiǎng)h除 下標(biāo)2 的位置開始,之后的全刪除
  • str.erase(2,1)——?jiǎng)h除 下標(biāo)2 的位置開始,之后的 1個(gè) 刪除
  • str.clear()——?jiǎng)h除 str 所有
  • str.replace(2,4,"abcd")——從 下標(biāo)2 的位置,替換 4個(gè)字節(jié) ,為"abcd"
  • str.empty()——判空

反轉(zhuǎn)相關(guān):

(位于頭文件<algorithm>)

  • reverse(str.begin(),str.end())——str的開始 到 結(jié)束字符反轉(zhuǎn)?

reverse(s4.begin,s4.end); ? ? ?? 結(jié)果:s4:ABCD ? -> ?? DCBA


查找相關(guān):

查找成功返回位置 ,查找失敗返回-1

find函數(shù):頭查

  • str.find('A')——查找 'A'
  • str.find("ABC")——查找 "ABC"

int n=s4.find("ABC"); ? s4:ABCD ?? -> ? n = 0

  • str.find('B',1)——從 位置1 處,查找'B'
  • str.find("ABC",1,2)——從 位置1 處,開始查找 'ABC' 的前 2個(gè) 字符

rfind函數(shù):尾部查

  • str.rfind('A')——查找 'A'
  • str.rfind("ABC")——查找 "ABC"

int n=s4.rfind("ABC"); ? s4:AAAABCD ?? -> ? n = 3

  • str.rfind('B',1)——從 位置1 處,向前查找'B'
  • str.rfind("ABC",1,2)——從 位置1 處,開始向前查找 'ABC' 的前 2個(gè) 字符

find_first_of()函數(shù):

查找是否包含子串中任何一個(gè)字符

  • str.find_first_of("abBc")——查找 "abBc" 和str 相等的任何字符,"abBc" 中有就返回位置
  • str.find_first_of("abBc",1)——查找 "abBc" 和str 相等的任何字符,從 位置1 處,開始查找"abBc" 中的字符,"abBc" 中有的就返回位置
  • str.find_first_of("abBc",1,2)——查找 "abBc" 和str 相等的任何字符,從 位置1 處,開始查找"abBc" 的前 2個(gè) 字符,"abBc" 中有的就返回位置

find_last_of()函數(shù):

find_first_not_of ()末尾查找, 從末尾處開始,向前查找是否包含有子串中任何一個(gè)字符

  • str.find_last_of("abBc")——查找 "abBc" 和str 相等的任何字符,向前查找,"abBc" 中有的返回位置
  • str.find_last_of("abBc",1)——查找 "abBc" 和str 相等的任何字符,從 位置1 處,開始向前查找"abBc" 中的字符,"abBc" 中有的就返回位置
  • str.find_last_of("abBc",10,2)——查找 "abBc" 和str 相等的任何字符,從 位置10 處,開始向前查找"abBc" 的前 2個(gè) 字符,"abBc" 中有的就返回位置

拷貝相關(guān)的:

  • str1=str.substr(2)——提取子串,提取出 str 的 下標(biāo)為2 到末尾,給 str1
  • str1=str.substr(2,3)——提取子串,提取出 str 的 下標(biāo)為2 開始,提取三個(gè)字節(jié),給 str1
  • const char* s1=str.data()——將string類轉(zhuǎn)為字符串?dāng)?shù)組,返回給s1

char* s=new char[10]

  • str.copy(s,count,pos)——將 str 里的 pos 位置開始,拷貝 count個(gè) 字符,存到 s 里

比較相關(guān)的函數(shù):(改部分已經(jīng)在VS2013中驗(yàn)證,錯(cuò)誤已更正,如還有,請指出)

compare函數(shù):(str原串)與(str新串)ASCII值相等返回0;(str原串)小于(str新串)返回-1;(str原串)大于(str新串)返回1。

示例對象:string str(“abcd”)

  • str.compare(“abcd”)——返回0。
  • str.compare(“abce”)——返回-1。
  • str.compare(“abcc”)——返回1。
  • str.compare(0,2,str,2,2)——用str的 下標(biāo)0 開始的 2個(gè)字符str的 下標(biāo)2 開始的 2個(gè) 字符比較——就是用 "ab" 和 "cd”" 比較,結(jié)果返回-1。
  • str.compare(1,2,”bcx”,2)——用str的 下標(biāo)1 開始的 2個(gè)字符"bcx"的 前 2個(gè) 字符比較——就是用 "bc" 和 "bc”" 比較,返回0。

附string常用函數(shù)表:

函數(shù)名描述
begin得到指向字符串開頭的Iterator
end得到指向字符串結(jié)尾的Iterator
rbegin得到指向反向字符串開頭的Iterator
rend得到指向反向字符串結(jié)尾的Iterator
size得到字符串的大小
length和size函數(shù)功能相同
max_size字符串可能的最大大小
capacity在不重新分配內(nèi)存的情況下,字符串可能的大小
empty判斷是否為空
operator[]取第幾個(gè)元素,相當(dāng)于數(shù)組
c_str取得C風(fēng)格的const char* 字符串
data取得字符串內(nèi)容地址
operator=賦值操作符
reserve預(yù)留空間
swap交換函數(shù)
insert插入字符
append追加字符
push_back追加字符
operator+=+= 操作符
erase刪除字符串
clear清空字符容器中所有內(nèi)容
resize重新分配空間
assign和賦值操作符一樣
replace替代
copy字符串到空間
find查找
rfind反向查找
find_first_of查找包含子串中的任何字符,返回第一個(gè)位置
find_first_not_of查找不包含子串中的任何字符,返回第一個(gè)位置
find_last_of查找包含子串中的任何字符,返回最后一個(gè)位置
find_last_not_of查找不包含子串中的任何字符,返回最后一個(gè)位置
substr得到字串
compare比較字符串
operator+字符串鏈接
operator==判斷是否相等
operator!=判斷是否不等于
operator<</td>判斷是否小于
operator>>從輸入流中讀入字符串
operator<<字符串寫入輸出流
getline從輸入流中讀入一行

總結(jié)

以上是生活随笔為你收集整理的C++——String类超详细介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。