Spec-Zone.ru › C++

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

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");
 
    // 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)
копирует диапазон элементов в новое местоположение
(шаблон функции)
memcpy
копирует один буфер в другой
(функция)

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

Spec-Zone.ru

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