void swap( basic_string& other ); | (until C++17) | |
void swap( basic_string& other ) noexcept(/* see below */); | (since C++17) (until C++20) | |
constexpr void swap( basic_string& other ) noexcept(/* see below */); | (since C++20) |
Exchanges the contents of the string with those of other
. All iterators and references may be invalidated.
The behavior is undefined if | (since C++11) |
other | - | string to exchange the contents with |
(none).
Constant.
No exception is thrown. | (until C++11) |
Exceptions can only be thrown in the case where the behavior is undefined (see above). If an exception is thrown for any reason, this function has no effect (strong exception safety guarantee). | (since C++11) |
noexcept specification: noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value || | (since C++17) |
#include <iostream> #include <string> 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
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 |
swaps the values of two objects (function template) |
|
swaps two ranges of elements (function template) |
|
(C++17) | swaps the contents (public member function of std::basic_string_view<CharT,Traits> ) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string/swap