最終更新日時(UTC):
が更新

履歴 編集

function
<string>

std::basic_string::operator+=

basic_string& operator+=(const basic_string& str);           // (1) C++03
constexpr basic_string& operator+=(const basic_string& str); // (1) C++20

basic_string& operator+=(const charT* s);           // (2) C++03
constexpr basic_string& operator+=(const charT* s); // (2) C++20

basic_string& operator+=(charT c);           // (3) C++03
constexpr basic_string& operator+=(charT c); // (3) C++20

basic_string& operator+=(initializer_list<charT> il);           // (4) C++11
constexpr basic_string& operator+=(initializer_list<charT> il); // (4) C++20

// string_viewを引数に取るオーバーロード
template<class T>
basic_string& operator+=(const T& t);           // (5) C++17
template<class T>
constexpr basic_string& operator+=(const T& t); // (5) C++20

概要

指定された文字列、文字、あるいは初期化リストを追加する。

テンプレートパラメータ制約

要件

  • (3) : s は少なくとも traits_type::length(s) + 1 の長さを持つ charT 型の配列を指していること。

効果

  • (1) 対象オブジェクトの末尾に str の値が追加(コピー)される。
    append(str) と等価。

  • (2) 対象オブジェクトの末尾に s から始まる NULL で終端された文字列が追加される。
    append(basic_string<value_type, traits_type, allocator_type>(s))(C++03 まで)、あるいは、append(s)(C++11 から)と等価。
    なお、s から始まる NULL 終端された文字列の長さは、traits_type::length(s) で求められる。

  • (3) 対象オブジェクトの末尾に文字 c が追加される。
    append(basic_string<value_type, traits_type, allocator_type>(1, c)) と等価。

  • (4) 対象オブジェクトの末尾に初期化リスト il で表された文字列が追加される。
    append(il) と等価。

  • (5) 対象オブジェクトの末尾にbasic_string_view<charT, traits>に変換可能なtの参照する文字列が追加される。
    以下と等価。

    basic_string_view<charT, traits> sv = t;
    return append(sv);
    

戻り値

*this

例外

  • (1) size() + str.size() > max_size() の場合、length_error が送出される。

  • (2) size() + traits_type::length(s) > max_size() の場合、length_error が送出される。

  • (3) size() + 1 > max_size() の場合、length_error が送出される。

  • (4) size() + il.size() > max_size() の場合、length_error が送出される。

  • (5) size() + sv.size() > max_size() の場合、length_error が送出される。

備考

本メンバ関数の呼び出しによって、対象オブジェクトの要素への参照、ポインタ、および、イテレータは無効になる可能性がある。

#include <iostream>
#include <string>
#include <string_view>

int main()
{
  std::string s1("Hello");
  std::cout << s1 << '\n';

  std::string s2(", ");
  s1 += s2;
  std::cout << s1 << '\n';

  s1 += "world";
  std::cout << s1 << '\n';

  s1 += '!';
  std::cout << s1 << '\n';

  s1 += { ' ', ':', ')' };
  std::cout << s1 << '\n';

  using namespace std::string_view_literals;

  s1 += " :)"sv;
  std::cout << s1 << '\n';
}

出力

Hello
Hello, 
Hello, world
Hello, world!
Hello, world! :)
Hello, world! :) :)

関連項目

名前 説明
append 文字/文字列を追加する
push_back 文字を追加する
insert 文字/文字列を挿入する
operator+ 文字列を連結する

参照