GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::basic_string::erase - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. string
  3. basic_string
  4. erase

最終更新日時: 2026年10月03日 22時31分04秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<string>

std::basic_string::erase

basic_string&
  erase(size_type pos = 0, size_type n = npos); // (1) C++98
constexpr basic_string&
  erase(size_type pos = 0, size_type n = npos); // (1) C++20

iterator erase(iterator p);                 // (2) C++98
iterator erase(const_iterator p);           // (2) C++11
constexpr iterator erase(const_iterator p); // (2) C++20

iterator
  erase(iterator first,
        iterator last);       // (3) C++98
iterator
  erase(const_iterator first,
        const_iterator last); // (3) C++11
constexpr iterator
  erase(const_iterator first,
        const_iterator last); // (3) C++20

概要

要素を削除する。

  • (1) : pos番目からn要素を削除する。
  • (2) : イテレータpが指す要素を削除する
  • (3) : イテレータ範囲[first, last)を削除する

要件

  • (1) : pos <= size()
  • (3) : firstとlastが*thisに対する有効なイテレータであり、[first, last)が有効な範囲であること。

効果

  • (1) : nとsize() - posのうち小さい方をxlenとし、pos番目からxlen個の要素を削除する。
  • (2) : イテレータpが指す要素を削除する。
  • (3) : イテレータ範囲[first, last)の文字列を削除する。

戻り値

  • (1) : *this
  • (2) : 削除した要素の次を指すイテレータを返す。そのような要素がなければend()を返す。
  • (3) : 最後に削除した要素の次を指すイテレータを返す。そのような要素がなければend()を返す。

例外

  • (1) : pos > size()の場合、out_of_range例外を送出する。
  • (2) : 投げない (C++14から)
  • (3) : 投げない (C++14から)

例

#include <iostream>
#include <string>

int main()
{
  // (1) 指定した位置からN個の要素を削除する
  {
    std::string s = "12345";

    // 1番目から2個の要素を削除
    s.erase(1, 2);

    std::cout << "(1) : " << s << std::endl;
  }

  // (2) 指定したイテレータが指す要素を削除する
  {
    std::string s = "12345";

    decltype(s)::iterator it = s.begin() + 2; // '3'を指す
    s.erase(it);

    std::cout << "(2) : " << s << std::endl;
  }

  // (3) 指定したイテレータ範囲を削除する
  {
    std::string s = "12345";

    decltype(s)::iterator it = s.begin() + 2; // '3'を指す
    s.erase(it, s.end());

    std::cout << "(3) : " << s << std::endl;
  }
}

出力

(1) : 145
(2) : 1245
(3) : 12

参照

  • LWG Issue 180. Container member iterator arguments constness has unintended consequences
  • LWG Issue 2003. String exception inconsistency in erase.
    • C++14から(2)と(3)に、「例外を投げない」という保証が追加された経緯のレポート
  • P0980R1 Making std::string constexpr
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.