最終更新日時:
が更新

履歴 編集

function
<string>

std::basic_string::erase

basic_string& erase(size_type pos = 0, size_type n = npos); // (1)

iterator erase(iterator p);       // (2) C++03まで
iterator erase(const_iterator p); // (2) C++11から

iterator erase(iterator first, iterator last);             // (3) C++03まで
iterator erase(const_iterator first, const_iterator last); // (3) C++11から

概要

要素を削除する。

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

要件

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

効果

  • (1) : nsize() - 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

参照