std::basic_string<CharT,Traits,Allocator>::swap - cppreference.com (original) (raw)

| void swap( basic_string& other ); | | (until C++17) | | -------------------------------------------------------------- | | ------------------------------------- | | void swap( basic_string& other ) noexcept(/* see below */); | | (since C++17) (constexpr since C++20) |

Exchanges the contents of the string with those of other. All iterators and references may be invalidated.

If std::allocator_traits<allocator_type>::propagate_on_container_swap::value is true, then the allocators are exchanged using an unqualified call to non-member swap. Otherwise, they are not swapped (and if get_allocator() != other.get_allocator(), the behavior is undefined). (since C++11)

[edit] Parameters

other - string to exchange the contents with

[edit] Complexity

Constant.

[edit] Exceptions

No exception is thrown. (until C++11)
No exception is thrown, unless the behavior is undefined.If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee). (since C++11)

[edit] Example

#include #include   int main() { std::string a = "AAA"; std::string b = "BBBB";   std::cout << "Before swap:\n" "a = " << a << "\n" "b = " << b << "\n\n";   a.swap(b);   std::cout << "After swap:\n" "a = " << a << "\n" "b = " << b << '\n'; }

Output:

Before swap: a = AAA b = BBBB   After swap: a = BBBB b = AAA

[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 403 C++98 swap() might throw an exception no exception is thrown
LWG 535 C++98 swapping strings did not preserve the character orders orders are also preserved
LWG 2151(P1148R0) C++11 no exception was thrown in the caseof unequal non-propagating allocators the behavior isundefined in this case

[edit] See also

| | swaps the values of two objects (function template) [edit] | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | swaps two ranges of elements (function template) [edit] | | | swaps the contents (public member function of std::basic_string_view<CharT,Traits>) [edit] |