Spec-Zone.ru › C++

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

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");
    
    // brace-initialization initializes all characters to 0,
    // providing a null-terminator
    char bar[4]{};
    
    // do not copy the last char, to guarantee null-termination
    foo.copy(bar, sizeof bar - 1);
    
    std::cout << bar << '\n'; // requires bar to be null-terminated
}

Вывод:

WIN

Отчёты об ошибках

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

DR Применяется к Опубликованное поведение Правильное поведение
LWG 847 C++98 гарантия безопасности при исключениях отсутствовала добавлена гарантия строгой безопасности при исключениях

См. также

substr
возвращает подстроку
(открытая функция-член)
copy
копирует символы
(открытая функция-член std::basic_string_view<CharT,Traits>)
copycopy_if
(C++11)
копирует диапазон элементов в новое место
(шаблон функции и функциональный объект алгоритма)
ranges::copyranges::copy_if
(C++20)(C++20)
memcpy
копирует один буфер в другой
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/string/basic_string/copy

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API