c++ --string操作

來源:互聯網
上載者:User

標籤:長度   應該   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操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.