標籤:長度 應該 rgs 定義 字元 style 預設 成員 注意
順序容器--額外的string操作
除了順序容器共同的操作之外,string類型還提供了一些額外的操作。這些操作中大致可以分為兩部分:
1. 提供string類和C風格字元出租之間的相互轉換;
2. 增加了允許我們用下標代替迭代器的版本。
構造string的其他方法
構造string的其他方法
| n,len2和pos2都是無符號值 |
|
| string s(cp,n) |
s是cp 指向的數組中前n 個字元的拷貝。此數組至少應該包含n個字元 |
| string s(s2,pos2) |
s是string s2 從下標pos2 開始的字元的拷貝。若pos2>s2.size(),建構函式的行為未定義。 |
| string s(s2,pos2,len2) |
s是string s2 從下標pos2 開始len2 個字元的拷貝。若pos2 > s2.size(),建構函式的行為未定義。不管len2 的值是多少, 建構函式至多拷貝s2.size()-pos2個字元。 |
這些建構函式接受一個string 或一個const char* 參數,還接受(可選的)指定拷貝多少個字元的參數(pos2,len2)。
substr(pos,n) 操作
substr操作返回一個string,它是原始string的一部分貨全部的拷貝。可以傳遞給substr 一個可選的開始位置和計數值:
string s("hello world");
//返回一個string,包含s 中從pos 開始的n 個字元的拷貝。pos的預設值為0。n的預設值為s,size()-pos, 即拷貝從pos開始的所有字元
string s1=s.substr(pos,n);
改變string的其他方法
| 修改string 的操作 |
|
常用情境 |
| s.assign(args) |
將s 中的字元替換為args 指定的字元。返回一個指向s 的引用 |
替換s 中的所有內容 |
| s.append(args) |
將args 追加到s末尾。返回一個指向s 的引用。 |
將新字元追加到s 末尾 |
| s.insert(pos,args) |
在pos 之前插入args 指定的字元。pos 可以使一個下標或一個迭代器。 接受下標的版本返回一個指向s 的引用;接受迭代器的版本返回指向第一個插入字元的迭代器。 |
在給定位置之前插入新字元 |
| s.replace(range,args) |
刪除s 中range 內的字元,替換為args 指定的字元。 range 或者是一個下標和一個長度,或者是一對指向s 的迭代器。返回一個指向s 的引用。 |
刪除指定範圍字元,並插入新字元 (新舊字元長度可以不一樣長) |
新字元可以來自於:1. 另一個string;2. 一個字元指標(指向的字元數組);3. 一個花括弧包圍的字元列表。當字元來自於一個string 或一個字元指標時,我們可以傳遞一個額外的參數來控制是拷貝部分還是全部字元。例如,s.insert(0, s2, 0, s2.size()); //在s[0]之前插入s2 中s2[0] 開始的s2.size() 個字元。
並不是每個函數都支援所有形式的參數。例如,insert 就不支援下標和初始化列表參數。類似的,如果我們希望用迭代器指定插入點,就不能用字元指標指定新字元的來源。
string 搜尋操作
string 類提供了6個不同的搜尋函數,每個函數都有4個重載版本。每個搜尋操作都返回一個string::size_type (無符號類型)值,表示匹配發生位置的下標。如果未找到,返回npos (初始化為-1)。
| string 搜尋操作 |
|
| s.find(args) |
尋找s 中args 第一次出現的位置 |
| s.rfind(args) |
尋找s 中args 最後一次出現的位置 |
| s.find_first_of(args) |
在s 中尋找args 中任何一個字元第一次出現的位置 |
| s.find_last_of(args) |
在s 中尋找args 中任何一個字元最後一次出現的位置 |
| s.find_first_not_of(args) |
在s 中尋找第一個不在args 中的字元 |
| s.find_last_not_of(args) |
在s 中尋找最後一個不在args 中的字元 |
args 必須是以下形式之一 |
注意:第2個參數才表示位置,與前面改變string 的成員函數不一樣 |
| c, pos |
從s 中位置pos開始尋找字元c. pos 預設為0 |
| s2, pos |
從s 中位置pos 開始尋找字串s2。 pos預設為0 |
| cp, pos |
從s 中位置pos 開始尋找指標cp 指向的以Null 字元結尾的C 風格字串。 pos 預設為0 |
| cp, pos, n |
從s 中位置pos 開始尋找指標cp 指向的數組的前n 個字元。 pos 和n 無預設值 |
compare函數
標準庫string 類型提供了一組compare 函數,類似C 標準庫的strcmp 函數,根據s 是等於、大於還是小於參數指定的字串,s.compare(args) 返回0,正數或負數。
根據參數的不同,compare函數有6個重載版本。具體args 形式參見c++ primer P327,表9.15.
數值轉換
新標準引入了多個函數,可以實現數值資料與標準庫string之間的轉換:
具體轉換函式,參見c++primer P328,表9.16.
c++ --string操作