std::basic_string<CharT,Traits,Allocator>:: operator=
|
basic_string
&
operator
=
(
const
basic_string
&
str
)
;
|
(1) | (constexpr depuis C++20) |
|
basic_string
&
operator
=
(
basic_string
&&
str
)
noexcept ( /* voir ci-dessous */ ) ; |
(2) |
(depuis C++11)
(constexpr depuis C++20) |
|
basic_string
&
operator
=
(
const
CharT
*
s
)
;
|
(3) | (constexpr depuis C++20) |
|
basic_string
&
operator
=
(
CharT ch
)
;
|
(4) | (constexpr depuis C++20) |
|
basic_string
&
operator
=
(
std::
initializer_list
<
CharT
>
ilist
)
;
|
(5) |
(depuis C++11)
(constexpr depuis C++20) |
|
template
<
class
StringViewLike
>
basic_string & operator = ( const StringViewLike & t ) ; |
(6) |
(depuis C++17)
(constexpr depuis C++20) |
|
basic_string
&
operator
=
(
std::
nullptr_t
)
=
delete
;
|
(7) | (depuis C++23) |
Remplace le contenu de la chaîne.
std:: basic_string_view < CharT, Traits >> est true et std:: is_convertible_v < const StringViewLike & , const CharT * > est false .
std::basic_string
ne peut pas être assigné à partir de
nullptr
.
Table des matières |
Paramètres
| ch | - | valeur pour initialiser les caractères de la chaîne |
| str | - | chaîne à utiliser comme source pour initialiser la chaîne |
| s | - | pointeur vers une chaîne de caractères terminée par un caractère nul à utiliser comme source pour initialiser la chaîne |
| ilist | - | std::initializer_list pour initialiser la chaîne |
| t | - | objet convertible en std::basic_string_view pour initialiser la chaîne |
Valeur de retour
* this
Complexité
CharT
doit être détruit). Si les allocateurs ne sont pas égaux et ne se propagent pas, alors également linéaire dans la taille de
str
(une copie doit être faite).
Exceptions
propagate_on_container_move_assignment
::
value
||
Si l'opération devait entraîner le dépassement de
size()
au-delà de
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 ( strong exception safety guarantee ).
Exemple
#include <iomanip> #include <iostream> #include <string> int main() { std::string str1; std::string str2{"alpha"}; // (1) operator=(const basic_string&); str1 = str2; std::cout << std::quoted(str1) << ' ' // "alpha" << std::quoted(str2) << '\n'; // "alpha" // (2) operator=(basic_string&&); str1 = std::move(str2); std::cout << std::quoted(str1) << ' ' // "alpha" << std::quoted(str2) << '\n'; // "" ou "alpha" (non spécifié) // (3) operator=(const CharT*); str1 = "beta"; std::cout << std::quoted(str1) << '\n'; // "beta" // (4) operator=(CharT); str1 = '!'; std::cout << std::quoted(str1) << '\n'; // "!" // (5) operator=(std::initializer_list<CharT>); str1 = {'g', 'a', 'm', 'm', 'a'}; std::cout << std::quoted(str1) << '\n'; // "gamma" // (6) operator=(const T&); str1 = 35U; // équivalent à str1 = static_cast<char>(35U); std::cout << std::quoted(str1) << '\n'; // "#" (ASCII = 35) }
Sortie possible :
"alpha" "alpha" "alpha" "" "beta" "!" "gamma" "#"
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 | aucune garantie de sécurité des exceptions n'était fournie | garantie de sécurité forte des exceptions ajoutée |
| LWG 2063 | C++11 |
l'opérateur d'affectation de déplacement ne respectait pas
SequenceContainer l'exigence sémantique de |
respecte |
| LWG 2946 | C++17 | la surcharge ( 6 ) provoquait une ambiguïté dans certains cas | évitée en la transformant en template |
Voir aussi
construit une
basic_string
(fonction membre publique) |
|
|
assigne des caractères à une chaîne
(fonction membre publique) |
|
|
assigne une vue
(fonction membre publique de
std::basic_string_view<CharT,Traits>
)
|