std::basic_string<CharT,Traits,Allocator>:: erase
From cppreference.net
<
cpp
|
string
|
basic string
|
basic_string
&
erase
(
size_type index
=
0
, size_type count
=
npos
)
;
|
(1) | (constexpr since C++20) |
| (2) | ||
|
iterator erase
(
iterator position
)
;
|
(until C++11) | |
|
iterator erase
(
const_iterator position
)
;
|
(since C++11)
(constexpr since C++20) |
|
| (3) | ||
|
iterator erase
(
iterator first, iterator last
)
;
|
(until C++11) | |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(since C++11)
(constexpr since C++20) |
|
文字列から指定された文字を削除します。
2)
position
の文字を削除します。
3)
[
first
,
last
)
の範囲の文字を削除します。
目次 |
パラメータ
| index | - | 削除する最初の文字 |
| count | - | 削除する文字数 |
| position | - | 削除する文字へのイテレータ |
| first, last | - | 削除する文字の範囲 |
戻り値
1)
*
this
2)
消去された文字の直後の文字を指すイテレータ、またはそのような文字が存在しない場合は
end()
を返す。
3)
消去前に指していた文字を指すイテレータ、またはそのような文字が存在しない場合は
end()
を返す。
例外
2,3)
例外を送出しない。
何らかの理由で例外がスローされた場合、この関数は何も効果を持ちません( strong exception safety guarantee )。
例
このコードを実行
#include <algorithm> #include <iostream> #include <iterator> #include <string> int main() { std::string s = "This Is An Example"; std::cout << "1) " << s << '\n'; s.erase(7, 3); // " An"を削除(オーバーロード(1)を使用) std::cout << "2) " << s << '\n'; s.erase(std::find(s.begin(), s.end(), ' ')); // 最初のスペースを削除(オーバーロード(2)) std::cout << "3) " << s << '\n'; s.erase(s.find(' ')); // スペースから文字列の末尾までをトリミング(オーバーロード(1)) std::cout << "4) " << s << '\n'; auto it = std::next(s.begin(), s.find('s')); // 最初の's'へのイテレータを取得 s.erase(it, std::next(it, 2)); // "sI"を削除(オーバーロード(3)) std::cout << "5) " << s << '\n'; }
出力:
1) This Is An Example 2) This Is Example 3) ThisIs Example 4) ThisIs 5) This
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 27 | C++98 |
オーバーロード
(
3
)
は
last
が指す文字を消去しなかったが、
その文字の直後の文字を指すイテレータを返した |
その文字を指すイテレータを
返す |
| LWG 428 | C++98 |
オーバーロード
(
2
)
は明示的に
position
が有効であることを要求したが、
SequenceContainer は間接参照可能であることを要求する(より厳しい) |
明示的な要求を
削除 |
| LWG 847 | C++98 | 例外安全性の保証がなかった |
強い例外安全性の
保証を追加 |
関連項目
|
内容をクリアする
(公開メンバ関数) |