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 大小成线性。
参阅
返回字符数 (公开成员函数) |