std::basic_string<CharT,Traits,Allocator>::operator=
basic_string& operator=( const basic_string& str ); |
(1) | (constexpr since C++20) |
basic_string& operator=( basic_string&& str ) noexcept(/* see below */); |
(2) | (since C++11) (constexpr since C++20) |
basic_string& operator=( const CharT* s ); |
(3) | (constexpr since C++20) |
basic_string& operator=( CharT ch ); |
(4) | (constexpr since C++20) |
basic_string& operator=( std::initializer_list<CharT> ilist ); |
(5) | (since C++11) (constexpr since C++20) |
template<class StringViewLike> basic_string& operator=( const StringViewLike& t ); |
(6) | (since C++17) (constexpr since C++20) |
| basic_string& operator=( std::nullptr_t ) = delete; |
(7) | (since C++23) |
Replaces the contents of the string.
std::basic_string_view<CharT, Traits>> is true and std::is_convertible_v<const StringViewLike&, const CharT*> is false.
std::basic_string cannot be assigned from nullptr.Contents |
[edit] Parameters
| ch | - | value to initialize characters of the string with |
| str | - | string to be used as source to initialize the string with |
| s | - | pointer to a null-terminated character string to use as source to initialize the string with |
| ilist | - | std::initializer_list to initialize the string with |
| t | - | object convertible to std::basic_string_view to initialize the string with |
[edit] Return value
*this
[edit] Complexity
CharT has to be destroyed). If allocators do not compare equal and do not propagate, then also linear in the size of str (copy must be made).[edit] Exceptions
propagate_on_container_move_assignment::value ||
If the operation would result in size() > max_size(), throws std::length_error.
If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee).
[edit] Example
#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'; // "" or "alpha" (unspecified) // (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; // equivalent to str1 = static_cast<char>(35U); std::cout << std::quoted(str1) << '\n'; // "#" (ASCII = 35) }
Possible output:
"alpha" "alpha" "alpha" "" "beta" "!" "gamma" "#"
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 847 | C++98 | there was no exception safety guarantee | added strong exception safety guarantee |
| LWG 2063 | C++11 | the move assignment operator did not follow SequenceContainer's semantic requirement |
follows |
| LWG 2946 | C++17 | overload (6) caused ambiguity in some cases | avoided by making it a template |
[edit] See also
constructs a basic_string (public member function) | |
| assign characters to a string (public member function) | |
| assigns a view (public member function of std::basic_string_view<CharT,Traits>)
|

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
