std::basic_string<CharT,Traits,Allocator>::copy
Материал из cppreference.com
< cpp | string | basic string
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const; |
(до C++20) | |
constexpr size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const; |
(начиная с C++20) | |
Копирует подстроку [
pos,
pos + count)
в строку символов, на которую указывает dest. Если запрошенная подстрока выходит за конец строки или если count == npos, скопированная подстрока имеет вид [
pos,
size()
)
.
Результирующая строка символов не заканчивается нулём.
Содержание |
[править] Параметры
dest | — | указатель на строку символов назначения |
count | — | длина подстроки |
pos | — | позиция первого символа, который будет включен |
[править] Возвращаемое значение
Количество скопированных символов.
[править] Исключения
std::out_of_range, если pos > size().
Если по какой-либо причине генерируется исключение, эта функция не имеет эффекта (строгая гарантия безопасности исключений).
[править] Сложность
Линейная по count.
[править] Пример
Запустить этот код
#include <iostream> #include <string> int main() { std::string foo("WINE"); // инициализация скобками инициализирует все символы значением 0, // обеспечивая нулевой терминатор char bar[4]{}; // не копируйте последний символ, чтобы гарантировать нулевое завершение foo.copy(bar, sizeof bar - 1); std::cout << bar << '\n'; // требует, чтобы bar заканчивался нулём }
Вывод:
WIN
[править] Отчёты о дефектах
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
Номер | Применён | Поведение в стандарте | Корректное поведение |
---|---|---|---|
LWG 847 | C++98 | не было гарантии безопасности исключений | добавлена надёжная гарантия безопасности исключений |
[править] Смотрите также
возвращает подстроку (public функция-элемент) | |
(C++17) |
копирует символы (public функция-элемент std::basic_string_view<CharT,Traits> )
|
(C++11) |
копирует диапазон элементов в новое место (шаблон функции) |
копирует один буфер в другой (функция) |