# std::basic_string<CharT,Traits,Allocator>::swap

From cppreference.com
< cpp‎ | string‎ | basic string

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

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

The behavior is undefined if `Allocator` does not propagate on swap and the allocators of `*this` and `other` are unequal. | (since C++11)

### Parameters

other | - | string to exchange the contents with

### Return value

(none)

### Exceptions

`noexcept` specification:
noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value
|| std::allocator_traits<Allocator>::is_always_equal::value)

(since C++17)

### Example

Run this code

    #include <string>
    #include <iostream>

    int main()
    {
        std::string a = "AAA";
        std::string b = "BBB";

        std::cout << "before swap" << '\n';
        std::cout << "a: " << a << '\n';
        std::cout << "b: " << b << '\n';

        a.swap(b);

        std::cout << "after swap" << '\n';
        std::cout << "a: " << a << '\n';
        std::cout << "b: " << b << '\n';
    }

Output:

    before swap
    a: AAA
    b: BBB
    after swap
    a: BBB
    b: AAA

### Complexity

Constant.

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/basic_string/swap&oldid=107720"