1. 程式人生 > >c++ --string操作

c++ --string操作

col 匹配 borde append width 開始 不支持 wid font

順序容器--額外的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 指向的以空字符結尾的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操作