public member function
<string>

std::basic_string::erase

sequence (1)
basic_string& erase (size_type pos = 0, size_type len = npos);
character (2)
     iterator erase (iterator p);
range (3)
     iterator erase (iterator first, iterator last);
sequence (1)
basic_string& erase (size_type pos = 0, size_type len = npos);
character (2)
     iterator erase (const_iterator p);
range (3)
     iterator erase (const_iterator first, const_iterator last);
從字串中刪除字元
刪除 basic_string 的一部分,從而減少其 長度

(1) 序列
刪除字串值中從字元位置 pos 開始並跨越 len 個字元的部分(或者直到字串的末尾,如果內容太短或者 lenbasic_string::npos)。
請注意,預設引數會刪除字串中的所有字元(如成員函式 clear)。
(2) 字元
刪除 p 指向的字元。
(3) 範圍
刪除範圍內的字元序列[first,last).

引數

pos
要刪除的第一個字元的位置。
如果它大於字串長度,則丟擲out_of_range
注意:str中的第一個字元用值表示0(不是1).
len
要刪除的字元數(如果字串較短,則儘可能多地刪除字元)。
basic_string::npos值表示直到字串末尾的所有字元。
p
指向要刪除的字元的迭代器。
first, last
指定要刪除的 basic_string 中的範圍的迭代器[first,last)。即,該範圍包括 firstlast 之間的所有字元,包括 first 指向的字元,但不包括 last 指向的字元。

成員型別size_type是一種無符號整型型別。
成員型別iteratorconst_iterator是指向 basic_string 的字元的 隨機訪問迭代器 型別。

返回值

序列版本 (1) 返回*this.
其他版本返回一個迭代器,該迭代器引用現在佔據第一個刪除的字元的位置的字元,如果不存在這樣的字元,則返回 basic_string::end

成員型別iterator是指向 basic_string 的字元的 隨機訪問迭代器 型別。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// string::erase
#include <iostream>
#include <string>

int main ()
{
  std::string str ("This is an example sentence.");
  std::cout << str << '\n';
                                           // "This is an example sentence."
  str.erase (10,8);                        //            ^^^^^^^^
  std::cout << str << '\n';
                                           // "This is an sentence."
  str.erase (str.begin()+9);               //           ^
  std::cout << str << '\n';
                                           // "This is a sentence."
  str.erase (str.begin()+5, str.end()-9);  //       ^^^^^
  std::cout << str << '\n';
                                           // "This sentence."
  return 0;
}
輸出
This is an example sentence.
This is an sentence.
This is a sentence.
This sentence.


複雜度

未指定,但通常與新的 字串長度 成線性關係。

迭代器有效性

與此物件相關的任何迭代器、指標和引用都可能失效。

資料競爭

物件被修改。

異常安全

強保證: 如果丟擲異常,則 basic_string 中沒有任何更改。

如果 pos 大於 字串長度,則會丟擲 out_of_range 異常。

(2) 中的無效 p(3) 中的無效範圍會導致未定義的行為
對於 (1)(3),如果丟擲異常,則 basic_string 中沒有變化(強保證)。
對於(2),它永遠不會丟擲異常(無丟擲保證)。

如果 pos 大於 字串長度,則會丟擲 out_of_range 異常。

(3) 中的無效範圍會導致未定義的行為

另見