std::basic_string<CharT,Traits,Allocator>:: append
|
basic_string
&
append
(
size_type count, CharT ch
)
;
|
(1) | (constexpr C++20以降) |
|
basic_string
&
append
(
const
CharT
*
s, size_type count
)
;
|
(2) | (constexpr C++20以降) |
|
basic_string
&
append
(
const
CharT
*
s
)
;
|
(3) | (constexpr C++20以降) |
|
template
<
class
SV
>
basic_string & append ( const SV & t ) ; |
(4) |
(C++17以降)
(constexpr C++20以降) |
|
template
<
class
SV
>
basic_string
&
append
(
const
SV
&
t, size_type pos,
|
(5) |
(C++17以降)
(constexpr C++20以降) |
|
basic_string
&
append
(
const
basic_string
&
str
)
;
|
(6) | (constexpr C++20以降) |
| (7) | ||
|
basic_string
&
append
(
const
basic_string
&
str,
size_type pos, size_type count ) ; |
(C++14まで) | |
|
basic_string
&
append
(
const
basic_string
&
str,
size_type pos, size_type count = npos ) ; |
(C++14以降)
(constexpr C++20以降) |
|
|
template
<
class
InputIt
>
basic_string & append ( InputIt first, InputIt last ) ; |
(8) | (constexpr C++20以降) |
|
basic_string
&
append
(
std::
initializer_list
<
CharT
>
ilist
)
;
|
(9) |
(C++11以降)
(constexpr C++20以降) |
文字列に追加の文字を追加します。
[
s
,
s
+
count
)
内の文字を追加します。
- std:: is_convertible_v < const SV & , std:: basic_string_view < CharT, Traits >> が true であること。
- std:: is_convertible_v < const SV & , const CharT * > が false であること。
return append ( sv. data ( ) , sv. size ( ) ) ; 。
return append ( sv. substr ( pos, count ) ) ; .
|
7)
return
append
(
std::
basic_string_view
<
CharT, Traits
>
( str ) . substr ( pos, count ) ) ; と同等。 |
(C++20以降) |
|
このオーバーロードは、
|
(C++11以前) |
|
このオーバーロードは、
|
(C++11以降) |
目次 |
パラメータ
| count | - | 追加する文字数 |
| ch | - | 追加する文字値 |
| s | - | 追加する文字列へのポインタ |
| t | - | std::basic_string_view に変換可能なオブジェクト(追加する文字を含む) |
| pos | - | 追加する最初の文字のインデックス |
| str | - | 追加する文字列 |
| first, last | - | 追加する文字の範囲 |
| ilist | - | 追加する文字を含む初期化子リスト |
戻り値
* this
計算量
標準的な計算量の保証はありません。一般的な実装は std::vector::insert() と同様の動作をします。
例外
操作によって
size()
が
max_size()
を超える場合、
std::length_error
を送出する。
何らかの理由で例外がスローされた場合、この関数は何も効果を持ちません( strong exception safety guarantee )。
例
#include <cassert> #include <string> int main() { std::string str = "std::string"; const char* cptr = "C-string"; const char carr[] = "range"; std::string result; // 1) 文字を3回追加 // 注: これは「CharT」を受け入れる唯一のオーバーロードです result.append(3, '*'); assert(result == "***"); // 2) 固定長C文字列を追加 result.append(cptr, 5); assert(result == "***C-str"); // 3) ヌル終端C文字列を追加 // 注: 「append」は*thisを返すため、呼び出しを連鎖できます result.append(1, ' ').append(cptr); assert(result == "***C-str C-string"); // 6) 文字列全体を追加 result.append(1, ' ').append(str); assert(result == "***C-str C-string std::string"); // 7) 文字列の一部を追加 result.append(str, 3, 2); assert(result == "***C-str C-string std::string::"); // 8) 範囲を追加 result.append(&carr[2], &carr[3]); assert(result == "***C-str C-string std::string::n"); // 9) 初期化子リストを追加 result.append({'p', 'o', 's'}); assert(result == "***C-str C-string std::string::npos"); }
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 847 | C++98 | 例外安全性保証がなかった | 強い例外安全性保証を追加 |
| LWG 2250 | C++98 |
オーバーロード
(7)
の動作は
pos > str. size ( ) の場合 true なら未定義 |
この場合常に例外をスロー |
| LWG 2788 | C++98 |
オーバーロード
(8)
は一時文字列の構築に
デフォルト構築されたアロケータを使用 |
アロケータを
get_allocator() から取得 |
| LWG 2946 | C++17 | オーバーロード (4) は一部の場合に曖昧性を引き起こす | テンプレート化することで回避 |
関連項目
|
(C++23)
|
範囲の文字を末尾に追加する
(公開メンバ関数) |
|
文字を末尾に追加する
(公開メンバ関数) |
|
|
2つの文字列を連結する
(関数) |
|
|
2つの文字列の特定の量の文字を連結する
(関数) |
|
|
ワイド文字列のコピーを別のワイド文字列に追加する
(関数) |
|
|
1つのワイド文字列から別のワイド文字列へ特定の量のワイド文字を追加する
(関数) |