Namespaces
Variants

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

From ru.cppreference.net
 
 
 
std::basic_string
 
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
(constexpr начиная с 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");
    // инициализация фигурными скобками инициализирует все символы нулями,
    // обеспечивая нуль-терминатор
    char bar[4]{};
    // не копировать последний символ, чтобы гарантировать нуль-терминацию
    foo.copy(bar, sizeof bar - 1);
    std::cout << bar << '\n'; // требует нуль-терминированной строки bar
}

Вывод:

WIN

Отчёты о дефектах

Следующие отчеты об изменениях в поведении, содержащие исправления дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 847 C++98 не было гарантии безопасности исключений добавлена строгая гарантия безопасности исключений

См. также

возвращает подстроку
(public функция-элемент)
копирует символы
(public функция-элемент класса std::basic_string_view<CharT,Traits>)
копирует диапазон элементов в новое место
(шаблон функции & алгоритмический объект-функция)
копирует один буфер в другой
(функция)