std::basic_string<CharT,Traits,Allocator>:: operator+=
|
basic_string
&
operator
+
=
(
const
basic_string
&
str
)
;
|
(1) | (constexpr depuis C++20) |
|
basic_string
&
operator
+
=
(
CharT ch
)
;
|
(2) | (constexpr depuis C++20) |
|
basic_string
&
operator
+
=
(
const
CharT
*
s
)
;
|
(3) | (constexpr depuis C++20) |
|
basic_string
&
operator
+
=
(
std::
initializer_list
<
CharT
>
ilist
)
;
|
(4) |
(depuis C++11)
(constexpr depuis C++20) |
|
template
<
class
StringViewLike
>
basic_string & operator + = ( const StringViewLike & t ) ; |
(5) |
(depuis C++17)
(constexpr depuis C++20) |
Ajoute des caractères supplémentaires à la chaîne.
std:: basic_string_view < CharT, Traits >> est true et std:: is_convertible_v < const StringViewLike & , const CharT * > est false .
Table des matières |
Paramètres
| str | - | chaîne à ajouter |
| ch | - | valeur de caractère à ajouter |
| s | - | pointeur vers une chaîne de caractères terminée par un caractère nul à ajouter |
| ilist | - | std::initializer_list avec les caractères à ajouter |
| t | - | objet (convertible en std::basic_string_view ) avec les caractères à ajouter |
Valeur de retour
* this
Complexité
Il n'y a pas de garanties de complexité standard, les implémentations typiques se comportent de manière similaire à std::vector::insert() .
Exceptions
Si l'opération devait entraîner le dépassement de
size()
par rapport à
max_size()
, lève
std::length_error
.
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).
Notes
Surcharge
(
2
)
peut accepter tous les types implicitement convertibles en
CharT
. Pour
std::string
, où
CharT
est
char
, l'ensemble des types acceptables inclut tous les types arithmétiques. Cela peut avoir des effets non intentionnels.
Exemple
#include <iomanip> #include <iostream> #include <string> int main() { std::string str; // réserver un espace de stockage suffisant pour éviter la réallocation de mémoire str.reserve(50); std::cout << std::quoted(str) << '\n'; // chaîne vide 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; // Équivalent à str += static_cast<char>(69.96); // 'E' (code ASCII 69) est ajouté par la surcharge (2), // ce qui pourrait ne pas être l'intention. // Pour ajouter une valeur numérique, considérez std::to_string() : str += std::to_string(1729); std::cout << std::quoted(str) << '\n'; }
Sortie :
"" "This" "This is " "This is a" "This is a string." "This is a string.E1729"
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 847 | C++98 | il n'y avait aucune garantie de sécurité des exceptions | garantie de sécurité forte des exceptions ajoutée |
| LWG 2946 | C++17 | la surcharge ( 5 ) provoquait une ambiguïté dans certains cas | évitée en la transformant en template |
Voir aussi
|
ajoute des caractères à la fin
(fonction membre publique) |