std::basic_string<CharT,Traits,Allocator>::operator+=
basic_string& operator+=( const basic_string& str );
|
(1) | (constexpr seit C++20) |
basic_string& operator+=( CharT ch );
|
(2) | (constexpr seit C++20) |
basic_string& operator+=( const CharT* s );
|
(3) | (constexpr seit C++20) |
basic_string& operator+=( std::initializer_list<CharT> ilist );
|
(4) | (seit C++11) (constexpr seit C++20) |
template< class StringViewLike >
basic_string& operator+=( const StringViewLike& t );
|
(5) | (seit C++17) (constexpr seit C++20) |
Hängt weitere Zeichen an die Zeichenkette an.
str an.ch an.s zeigt.ilist an.t implizit in eine Zeichenkettenansicht sv, wie durch std::basic_string_view<CharT, Traits> sv = t;, und hängt dann die Zeichen der Zeichenkettenansicht sv an, wie durch append(sv).std::is_convertible_v<const StringViewLike&,std::basic_string_view<CharT, Traits>> true ist und std::is_convertible_v<const StringViewLike&, const CharT*> false ist.Parameter
| str | - | anzuhängende Zeichenkette |
| ch | - | anzuhängender Zeichenwert |
| s | - | Zeiger auf eine nullterminierte Zeichenkette zum Anhängen |
| ilist | - | std::initializer_list mit den anzuhängenden Zeichen |
| t | - | Objekt (konvertierbar zu std::basic_string_view ) 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() .
Exceptions
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 ).
Hinweise
Overload
(
2
)
kann alle Typen akzeptieren, die implizit in
CharT
konvertierbar sind. Für
std::string
, bei dem
CharT
als
char
definiert ist, schließt die Menge der akzeptablen Typen alle arithmetischen Typen ein. Dies kann unbeabsichtigte Effekte haben.
Beispiel
#include <iomanip> #include <iostream> #include <string> int main() { std::string str; // Ausreichend Speicherplatz reservieren, um Speicherneuzuweisung zu vermeiden str.reserve(50); std::cout << std::quoted(str) << '\n'; // leerer 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 += 69.96; // Entspricht str += static_cast<char>(69.96); // 'E' (ASCII-Code 69) wird durch Überladung (2) angehängt, // was möglicherweise nicht beabsichtigt ist. // Um einen numerischen Wert hinzuzufügen, std::to_string() in Betracht ziehen: str += std::to_string(1729); std::cout << std::quoted(str) << '\n'; }
Ausgabe:
"" "This" "This is " "This is a" "This is a string." "This is a string.E1729"
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 847 | C++98 | es gab keine Exception-Sicherheitsgarantie | starke Exception-Sicherheitsgarantie hinzugefügt |
| LWG 2946 | C++17 | Überladung ( 5 ) verursachte in einigen Fällen Mehrdeutigkeit | vermieden durch Template-Implementierung |
Siehe auch
|
fügt Zeichen am Ende hinzu
(öffentliche Elementfunktion) |