std::basic_string<CharT,Traits,Allocator>::operator+=
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (1) | ||
basic_string& operator+=( const basic_string& str ); |
(C++20未満) | |
constexpr basic_string& operator+=( const basic_string& str ); |
(C++20以上) | |
| (2) | ||
basic_string& operator+=( CharT ch ); |
(C++20未満) | |
constexpr basic_string& operator+=( CharT ch ); |
(C++20以上) | |
| (3) | ||
basic_string& operator+=( const CharT* s ); |
(C++20未満) | |
constexpr basic_string& operator+=( const CharT* s ); |
(C++20以上) | |
| (4) | ||
basic_string& operator+=( std::initializer_list<CharT> ilist ); |
(C++11以上) (C++20未満) |
|
constexpr basic_string& operator+=( std::initializer_list<CharT> ilist ); |
(C++20以上) | |
| (5) | ||
template < class T > basic_string& operator+=( const T& t ); |
(C++17以上) (C++20未満) |
|
template < class T > constexpr basic_string& operator+=( const T& t ); |
(C++20以上) | |
追加の文字を文字列に追加します。
1) 文字列
str を追加します。2) 文字
ch を追加します。3)
s の指すヌル終端文字列を追加します。4) 初期化子リスト
ilist 内の文字を追加します。5)
std::basic_string_view<CharT, Traits> sv = t; によって行われたかのように、 t を文字列ビュー sv に暗黙に変換し、 append(sv) によって行われたかのように文字列ビュー sv 内の文字を追加します。 このオーバーロードは、std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> が true であり、 std::is_convertible_v<const T&, const CharT*> が false である場合にのみ、オーバーロード解決に参加します。引数
| str | - | 追加する文字列 |
| ch | - | 追加する文字値 |
| s | - | 追加するヌル終端文字列を指すポインタ |
| ilist | - | 追加する文字を持つ std::initializer_list |
| t | - | 追加する文字を持つ (std::basic_string_view に変換可能な) オブジェクト |
戻り値
*this。
計算量
標準の計算量の保証はありません。 一般的な実装は std::vector::insert と同様に振る舞います。
例外
何らかの理由で例外が投げられた場合、この関数は効果を持ちません (強い例外保証)。 (C++11以上)
操作の結果 size() > max_size() となる場合は std::length_error を投げます。
ノート
オーバーロード (2) は CharT に暗黙に変換可能な任意の型を受け付けます。 CharT が char である std::string の場合、受け付ける型の集合にすべての算術型が含まれます。 これは意図しない結果を生むことがあります。
欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR | 適用先 | 発行時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2946 | C++17 | string_view overload causes ambiguity in some cases
|
avoided by making it a template |
例
Run this code
#include <iostream>
#include <iomanip>
#include <string>
int main()
{
std::string str;
str.reserve(50); //reserves sufficient storage space to avoid memory reallocation
std::cout << std::quoted(str) << '\n'; //empty string
str += "This";
std::cout << std::quoted(str) << '\n';
str += std::string(" is ");
std::cout << std::quoted(str) << '\n';
str += 'a';
std::cout << std::quoted(str) << '\n';
str += {' ','s','t','r','i','n','g','.'};
std::cout << std::quoted(str) << '\n';
str += 76.85; // equivalent to str += static_cast<char>(76.85), might not be the intent
std::cout << std::quoted(str) << '\n';
}
出力:
""
"This"
"This is "
"This is a"
"This is a string."
"This is a string.L"
関連項目
| 文字を末尾に追加します (パブリックメンバ関数) |