std::basic_string<CharT,Traits,Allocator>:: append
|
basic_string
&
append
(
size_type count, CharT ch
)
;
|
(1) | (constexpr seit C++20) |
|
basic_string
&
append
(
const
CharT
*
s, size_type count
)
;
|
(2) | (constexpr seit C++20) |
|
basic_string
&
append
(
const
CharT
*
s
)
;
|
(3) | (constexpr seit C++20) |
|
template
<
class
SV
>
basic_string & append ( const SV & t ) ; |
(4) |
(seit C++17)
(constexpr seit C++20) |
|
template
<
class
SV
>
basic_string
&
append
(
const
SV
&
t, size_type pos,
|
(5) |
(seit C++17)
(constexpr seit C++20) |
|
basic_string
&
append
(
const
basic_string
&
str
)
;
|
(6) | (constexpr seit C++20) |
| (7) | ||
|
basic_string
&
append
(
const
basic_string
&
str,
size_type pos, size_type count ) ; |
(bis C++14) | |
|
basic_string
&
append
(
const
basic_string
&
str,
size_type pos, size_type count = npos ) ; |
(seit C++14)
(constexpr seit C++20) |
|
|
template
<
class
InputIt
>
basic_string & append ( InputIt first, InputIt last ) ; |
(8) | (constexpr seit C++20) |
|
basic_string
&
append
(
std::
initializer_list
<
CharT
>
ilist
)
;
|
(9) |
(seit C++11)
(constexpr seit C++20) |
Fügt zusätzliche Zeichen an die Zeichenkette an.
[
s
,
s
+
count
)
hinzu.
- std:: is_convertible_v < const SV & , std:: basic_string_view < CharT, Traits >> ist true .
- std:: is_convertible_v < const SV & , const CharT * > ist false .
return append ( sv. data ( ) , sv. size ( ) ) ; .
return append ( sv. substr ( pos, count ) ) ; .
|
7)
Entspricht
return
append
(
std::
basic_string_view
<
CharT, Traits
>
( str ) . substr ( pos, count ) ) ; . |
(seit C++20) |
|
Diese Überladung hat denselben Effekt wie Überladung
(1)
, wenn
|
(bis C++11) |
|
Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn
|
(seit C++11) |
Inhaltsverzeichnis |
Parameter
| count | - | Anzahl der anzuhängenden Zeichen |
| ch | - | anzuhängender Zeichenwert |
| s | - | Zeiger auf die anzuhängende Zeichenkette |
| t | - | in std::basic_string_view konvertierbares Objekt mit den anzuhängenden Zeichen |
| pos | - | Index des ersten anzuhängenden Zeichens |
| str | - | anzuhängende Zeichenkette |
| first, last | - | Bereich der anzuhängenden Zeichen |
| ilist | - | Initialisierungsliste mit den anzuhängenden Zeichen |
Rückgabewert
* this
Komplexität
Es gibt keine standardmäßigen Komplexitätsgarantien, typische Implementierungen verhalten sich ähnlich wie std::vector::insert() .
Ausnahmen
Falls die Operation dazu führen würde, dass
size()
die
max_size()
überschreitet, wird
std::length_error
ausgelöst.
Wenn aus irgendeinem Grund eine Exception ausgelöst wird, hat diese Funktion keine Wirkung ( strong exception safety guarantee ).
Beispiel
#include <cassert> #include <string> int main() { std::string str = "std::string"; const char* cptr = "C-string"; const char carr[] = "range"; std::string result; // 1) Ein Zeichen 3-mal anhängen. // Hinweis: Dies ist die einzige Überladung, die "CharT" akzeptiert. result.append(3, '*'); assert(result == "***"); // 2) Einen festlangen C-String anhängen result.append(cptr, 5); assert(result == "***C-str"); // 3) Einen nullterminierten C-String anhängen // Hinweis: Da "append" *this zurückgibt, können wir Aufrufe verketten. result.append(1, ' ').append(cptr); assert(result == "***C-str C-string"); // 6) Einen gesamten String anhängen result.append(1, ' ').append(str); assert(result == "***C-str C-string std::string"); // 7) Einen Teil eines Strings anhängen result.append(str, 3, 2); assert(result == "***C-str C-string std::string::"); // 8) Einen Bereich anhängen result.append(&carr[2], &carr[3]); assert(result == "***C-str C-string std::string::n"); // 9) Eine Initialisierungsliste anhängen result.append({'p', 'o', 's'}); assert(result == "***C-str C-string std::string::npos"); }
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 847 | C++98 | es gab keine Ausnahmesicherheitsgarantie | starke Ausnahmesicherheitsgarantie hinzugefügt |
| LWG 2250 | C++98 |
das Verhalten der Überladung
(7)
war
undefiniert wenn pos > str. size ( ) ist true |
wirft in diesem Fall immer eine Ausnahme |
| LWG 2788 | C++98 |
Überladung
(8)
verwendete einen standardkonstruierten
Allokator für die temporäre Zeichenkette |
bezieht den Allokator
von get_allocator() |
| LWG 2946 | C++17 | Überladung (4) verursacht in manchen Fällen Mehrdeutigkeit | vermieden durch Template-Implementierung |
Siehe auch
|
(C++23)
|
hängt einen Bereich von Zeichen an das Ende an
(öffentliche Elementfunktion) |
|
hängt Zeichen an das Ende an
(öffentliche Elementfunktion) |
|
|
verkettet zwei Zeichenketten
(Funktion) |
|
|
verkettet eine bestimmte Anzahl von Zeichen zweier Zeichenketten
(Funktion) |
|
|
hängt eine Kopie einer Breitzeichenkette an eine andere an
(Funktion) |
|
|
hängt eine bestimmte Anzahl von Breitzeichen von einer Breitzeichenkette an eine andere an
(Funktion) |