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

< cpp‎ | string‎ | basic string

| (1) |
void resize( size_type count ); |  | (C++20 前)
constexpr void resize( size_type count ); |  | (C++20 起)
| (2) |
void resize( size_type count, CharT ch ); |  | (C++20 前)
constexpr void resize( size_type count, CharT ch ); |  | (C++20 起)

重设 string 大小以含 `count` 个字符。

若当前大小小于 `count` ，则后附额外的字符。

若当前大小大于 `count` ，则缩减 string 到为其首 `count` 个元素。

第一版本初始化新字符为 CharT() ，第二版本初始化新字符为 `ch` 。

### 参数

count | - | string 的新大小
ch | - | 用以初始化新字符的字符

### 返回值

（无）

### 异常

若 count > max_size() 则为 std::length_error 。对应 `Allocator` 所抛的任何异常。

若因任何原因抛出异常，则此函数无效果（强异常保证）。 (C++11 起)

### 示例

    #include <iostream>
    #include <stdexcept>

    int main()
    {
        std::cout << "Basic functionality:\n";
        const unsigned  desired_length(8);
        std::string     long_string( "Where is the end?" );
        std::string     short_string( "Ha" );

        // 缩短
        std::cout << "Before: \"" << long_string << "\"\n";
        long_string.resize( desired_length );
        std::cout << "After: \"" << long_string <<  "\"\n";

        // 加长
        std::cout << "Before: \"" << short_string <<  "\"\n";
        short_string.resize( desired_length, 'a' );
        std::cout << "After: \"" << short_string <<  "\"\n";

        std::cout  << "\nErrors:\n";
        {
            std::string s;

            try {
                // 大小 OK ，无 length_error
                // （可能抛 bad_alloc ）
                s.resize(s.max_size() - 1, 'x');
            } catch (const std::bad_alloc&) {
                std::cout << "1. bad alloc\n";
            }

            try {
                // 大小 OK ，无 length_error
                // （可能抛 bad_alloc ）
                s.resize(s.max_size(), 'x');
            } catch (const std::bad_alloc& exc) {
                std::cout << "2. bad alloc\n";
            }

            try {
                // 大小错误，抛出 length_error
                s.resize(s.max_size() + 1, 'x');
            } catch (const std::length_error&) {
                std::cout << "3. length error\n";
            }
         }
    }

可能的输出：

    Basic functionality:
    Before: "Where is the end?"
    After: "Where is"
    Before: "Ha"
    After: "Haaaaaaa"

    Errors:
    1. bad alloc
    2. bad alloc
    3. length error

### 复杂度

与 string 大小成线性。

### 参阅

size length | 返回字符数 (公开成员函数)