Namespaces
Variants

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

From 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 не было гарантии безопасности исключений добавлена строгая гарантия безопасности исключений

Смотрите также

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