日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

(歡迎及時指正錯誤!謝謝)

STL的含義:標準模板庫

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:動態(tài)順序表

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

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

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

stack:棧

queue:隊列

String類:按照類的方式進行動態(tài)管理字符串

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


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

  • string? str——構(gòu)造空的string類對象,即空字符串
  • string str(str1)——str1 和 str 一樣
  • string? str("ABC")——等價于 str="ABC"
  • string? str("ABC",strlen)——等價于 "ABC" 存入 str 中,最多存儲 strlen 個字節(jié)
  • string? str("ABC",stridx,strlen)——等價于 "ABC" 的stridx 位置,作為字符串開頭,存到str中,最多存儲 strlen 個字節(jié)
  • string? str(srelen,'A')——存儲 strlen 個 'A' 到 str 中
//用法小實例
#include<iostream>
using namespace std;int main() {string s1;   //空字符串string s2(10,'$');  //十個 $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類時,必須包含頭文件以及using namespace std。


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

assign函數(shù):

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

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

insert函數(shù)方法:?

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

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

  • str.insert( iterator pos, size_type count, CharT ch )——在 str 中,迭代器指向的 pos位置 插入 count個 字符 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)——刪除 下標2 的位置開始,之后的全刪除
  • str.erase(2,1)——刪除 下標2 的位置開始,之后的 1個 刪除
  • str.clear()——刪除 str 所有
  • str.replace(2,4,"abcd")——從 下標2 的位置,替換 4個字節(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個 字符

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個 字符

find_first_of()函數(shù):

查找是否包含子串中任何一個字符

  • 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個 字符,"abBc" 中有的就返回位置

find_last_of()函數(shù):

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

  • 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個 字符,"abBc" 中有的就返回位置

拷貝相關(guān)的:

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

char* s=new char[10]

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

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

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的 下標0 開始的 2個字符str的 下標2 開始的 2個 字符比較——就是用 "ab" 和 "cd”" 比較,結(jié)果返回-1。
  • str.compare(1,2,”bcx”,2)——用str的 下標1 開始的 2個字符"bcx"的 前 2個 字符比較——就是用 "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[]取第幾個元素,相當于數(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查找包含子串中的任何字符,返回第一個位置
find_first_not_of查找不包含子串中的任何字符,返回第一個位置
find_last_of查找包含子串中的任何字符,返回最后一個位置
find_last_not_of查找不包含子串中的任何字符,返回最后一個位置
substr得到字串
compare比較字符串
operator+字符串鏈接
operator==判斷是否相等
operator!=判斷是否不等于
operator<</td>判斷是否小于
operator>>從輸入流中讀入字符串
operator<<字符串寫入輸出流
getline從輸入流中讀入一行

總結(jié)

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

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