構造和改變乙個string的其他方法

2021-08-21 06:07:14 字數 2545 閱讀 3690

構造乙個string的其他方法:

1string s1(cp, n),cp為c風格陣列名或乙個指向c風格陣列的指標,則執行的操作為拷貝從cp開始包括cp在內的接下來n個字元給s1,n的預設值為sizeof(cp)/sizeof(int、char)。可以自由設定第乙個引數(cp+1, cp+2,)

2string s2(s, pos, len), s為乙個string型別字串,則執行的操作是將從下標為pos的字元開始,把包括s[pos]在內的往後len個字元拷貝給s2.   pos必須小於等於s.size(),否則建構函式的行為未定義,len的預設值為s.size() – pos,即string s3(s, pos)預設為拷貝從pos開始的所有字元,不能對第乙個引數實行加減法,因為strin+int不存在

第二種方式對c風格陣列也是用,string s(cp, pos, len), 則將cp拷貝給乙個string 字串之後再來執行操作(即相當於執行string s(string(cp), pos, len)。ps:nc風格陣列的陣列名相當於是乙個指向該陣列的指標,而string型別字串則是乙個類,類名不能當成乙個指向該字串的指標。

3string s3 = s.substr(pos, n),     s.substr(pos,n)返回乙個string,包含從pos開始的n個字元的拷貝。pos的預設值為0,n的預設值為s.size() – pos, 急拷貝從pos開始的所有內容。pos同樣不能大於s.size(),否則會丟擲乙個out_of_rangge異常。

改變string的其他方法:

s.insert(pos, n, ch), 在位置pos之前插入n個ch字元

s.insert(s.size(), 5, 『!』) //在s末尾插入5個感嘆號

s.erase(pos, n);從pos開始刪除n個字元

s.erase(s.size(), 5); //從s刪除最後5個字元

c風格:

s.assign(cstr, n)            //將cstr的前n個字元賦值給s,n必須小於等於陣列中的字元數

s.insert(pos, cstr) //在位置pos之前插入cstr

string:

s.insert(pos, s2);    //在s中位置pos之前插入s2的拷貝(最先插入的是s2的第乙個字元)

s.insert(pos1, s2, pos2, strlen) //在s[pos1]之前插入s2中s[pos2]開始的strlen個字元

修改string的操作:

s.insert(pos, args)

在pos之前插入args指定的字元。pos可以是乙個下標或乙個迭代器。接受下標的版本返回乙個指向s的引用;接受迭代器的版本返回指向第乙個插入字元的迭代器。

s.erase(pos, len)

刪除從位置pos開始的len個字元。如果第二個引數被省略,則刪除從pos開始直至s末尾的所有字元,相當於len的預設值為s.size()-pos。返回乙個指向s的引用。

s.assign(args)

將s中的字元替換為args指定的字元,返回乙個指向s的引用

將args指定字元追加到s。返回乙個指向s的引用。

s.replace(range, args)

刪除s中範圍range內的字元,替換為args指定的字元。range或者是乙個下標和乙個長度,或者是一對指向s的迭代器。返回乙個指向s的引用

str不能與s相同,迭代器b和e不能指向s

str 字串str

str, pos, len str中從pos開始最多len個字元

cp, len cp之指向的字元陣列的前(最多)len個字元

cp cp指向的以空字元結尾的字元陣列

n, c n個字元c

b, e 迭代器b和 e指定的範圍內的字元

初始化列表 花括號保衛的,以逗號分隔的字元列表

replace和insert所允許的args形式依賴於range和pos是如何指定的。

replace

(pos,len,args)

replace

(b, e, args)

insert

(pos, args)

insert

(iter, args)

args

可以是是是是

否str是否

是否str, pos, len是是

是否cp, len是是

否否cp是

是是是n, c否是

否是b2, e2否是

否是初始化列表

(該錶摘自c++ primer 第五版 p323)

string的乙個用法

string的用法 以前在寫 時,在布局檔案中總是有感嘆號的出現 現在才發現原來是跟string 的知識點有關啊!總算明白了。layout布局裡面的activity main.xml android id id btn login android layout width wrap content ...

如何將乙個String和多個String值進行比較

開發中我們經常需要將乙個string和多個string值進行比較。直覺反應是使用 符號連線多個 完成,比如 fruitcolor yellow 這樣能夠很好的完成需求,但總覺得有點笨,並且對擴充套件不友好,當我們的水果種類變多時 fruitcolor yellow 上面的 看起來就不那麼好看了,讓我...

乙個自己實現的string

最近實現了乙個string 類,新增了一些c 11 元素。除了基本的構造析構函式,拷貝構造和賦值函式,另外新增移動拷貝和賦值函式。default是乙個很方便的特性有木有。default constructor kianstring default kianstring const char c ch...