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

< cpp‎ | string‎ | basic string

void swap( basic_string& other ); |  | (C++17 前)
void swap( basic_string& other ) noexcept(/* see below */); |  | (C++17 起) (C++20 前)
constexpr void swap( basic_string& other ) noexcept(/* see below */); |  | (C++20 起)

交换 string 与 `other` 的内容。可能非法化所有迭代器和引用。

若 `Allocator` 不在交换时传播且 `*this` 与 `other` 的分配器不相等则行为未定义。 | (C++11 起)

### 参数

other | - | 要与之交换内容的 string

### 返回值

（无）

### 复杂度

常数。

### 异常 `noexcept` 说明： noexcept(std::allocator_traits<Allocator>::propagate_on_container_swap::value || std::allocator_traits<Allocator>::is_always_equal::value) | (C++17 起)

### 示例

    #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';
    }

输出：

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