Пространства имён
Варианты
Действия

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

Материал из cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
Функции-элементы
Доступ к элементам
Итераторы
Ёмкость
Операции
basic_string::resize
Поиск
Константы
Правила вывода(C++17)
Функции, не являющиеся элементами
Ввод/Вывод
Сравнение
(до C++20)(до C++20)(до C++20)(до C++20)(до C++20)(C++20)
Числовые преобразования
(C++11)(C++11)(C++11)
(C++11)(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Вспомогательные классы
 
(1)
void resize( size_type count );
(до C++20)
constexprvoid resize( size_type count );
(начиная с C++20)
(2)
void resize( size_type count, CharT ch );
(до C++20)
constexprvoid resize( size_type count, CharT ch );
(начиная с C++20)

Изменяет размер строки, чтобы она содержала count символов.

Если текущий размер меньше count, добавляются дополнительные символы:

1) Инициализирует добавленные символы в CharT() ('\0', если CharT равно char).
2) Инициализирует добавленные символы в ch.

Если текущий размер больше, чем count, строка уменьшается до первых count элементов.

Содержание

[править]Параметры

count новый размер строки
ch символ для инициализации новых символов

[править]Возвращаемое значение

(нет)

[править]Исключения

std::length_error, если count > max_size(). Любые исключения, сгенерированные соответствующим Allocator.

Если по какой-либо причине генерируется исключение, эта функция не имеет эффекта (строгая гарантия безопасности исключений).

[править]Пример

#include <iomanip>#include <iostream>#include <stdexcept>   int main(){constunsigned desired_length{8};std::string long_string("Where is the end?");std::string short_string("H");   std::cout<<"Базовый функционал:\n"<<"Сократить:\n"<<"1. Перед: "<<std::quoted(long_string)<<'\n'; long_string.resize(desired_length);std::cout<<"2. После: "<<std::quoted(long_string)<<'\n';   std::cout<<"Удлинить с заданным значением 'a':\n"<<"3. Перед: "<<std::quoted(short_string)<<'\n'; short_string.resize(desired_length, 'a');std::cout<<"4. После: "<<std::quoted(short_string)<<'\n';   std::cout<<"Удлинить с помощью char() == "<<static_cast<int>(char())<<'\n'<<"5. Перед: "<<std::quoted(short_string)<<'\n'; short_string.resize(desired_length +3);std::cout<<"6. После: \"";for(char c : short_string)std::cout<<(c ==char()?'@': c);std::cout<<"\"\n\n";   std::cout<<"Ошибки:\n";std::string s;   try{// размер OK, нет length_error// (может сгенерировать bad_alloc) s.resize(s.max_size()-1, 'x');}catch(conststd::bad_alloc& ex){std::cout<<"1. Исключение: "<< ex.what()<<'\n';}   try{// размер OK, нет length_error// (может сгенерировать bad_alloc) s.resize(s.max_size(), 'x');}catch(conststd::bad_alloc& ex){std::cout<<"2. Исключение: "<< ex.what()<<'\n';}   try{// размер НЕПРАВИЛЬНЫЙ, генерирует length_error s.resize(s.max_size()+1, 'x');}catch(conststd::length_error& ex){std::cout<<"3. Ошибка длины: "<< ex.what()<<'\n';}}

Возможный вывод:

Базовый функционал: Сократить: 1. Перед: "Where is the end?" 2. После: "Where is" Удлинить с заданным значением 'a': 3. Перед: "H" 4. После: "Haaaaaaa" Удлинить с помощью char() == 0 5. Перед: "Haaaaaaa" 6. После: "Haaaaaaa@@@"   Ошибки: 1. Исключение: std::bad_alloc 2. Исключение: std::bad_alloc 3. Ошибка длины: basic_string::_M_replace_aux

[править]Отчёты о дефектах

Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 847 C++98 не было гарантии безопасности исключений добавлена надёжная гарантия безопасности исключений

[править]Смотрите также

возвращает количество символов
(public функция-элемент)[править]
резервирует память
(public функция-элемент)[править]
уменьшает использование памяти за счёт освобождения неиспользуемой памяти
(public функция-элемент)[править]
close