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) |
Fügt zusätzliche Zeichen an die Zeichenkette an.
std:: basic_string_view < CharT, Traits >> true ist und std:: is_convertible_v < const StringViewLike & , const CharT * > false ist.
Inhaltsverzeichnis |
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) |