命名空间
变体
操作

std::basic_string_view<CharT,Traits>::copy

来自 cppreference.com
 
 
 
 
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
(自 C++17 起)
(自 C++20 起为 constexpr)

将子字符串 [pospos + rcount) 复制到 dest 指向的字符数组中,其中 rcountcountsize() - pos 中较小的那个。

等效于 Traits::copy(dest, data() + pos, rcount).

内容

[编辑] 参数

dest - 指向目标字符字符串的指针
count - 请求的子字符串长度
pos - 第一个字符的位置

[编辑] 返回值

复制的字符数量。

[编辑] 异常

std::out_of_range 如果 pos > size().

[编辑] 复杂度

rcount 线性。

[编辑] 示例

#include <array>
#include <cstddef>
#include <iostream>
#include <stdexcept>
#include <string_view>
 
int main()
{
    constexpr std::basic_string_view<char> source{"ABCDEF"};
    std::array<char, 8> dest;
    std::size_t count{}, pos{};
 
    dest.fill('\0');
    source.copy(dest.data(), count = 4); // pos = 0
    std::cout << dest.data() << '\n'; // ABCD
 
    dest.fill('\0');
    source.copy(dest.data(), count = 4, pos = 1);
    std::cout << dest.data() << '\n'; // BCDE
 
    dest.fill('\0');
    source.copy(dest.data(), count = 42, pos = 2); // ok, count -> 4
    std::cout << dest.data() << '\n'; // CDEF
 
    try
    {
        source.copy(dest.data(), count = 1, pos = 666); // throws: pos > size()
    }
    catch (std::out_of_range const& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

输出

ABCD
BCDE
CDEF
basic_string_view::copy: __pos (which is 666) > __size (which is 6)

[编辑] 另请参阅

返回一个子字符串
(公共成员函数) [编辑]
复制字符
(std::basic_string<CharT,Traits,Allocator> 的公共成员函数) [编辑]
将一系列元素复制到新位置
(函数模板) [编辑]
将一个缓冲区复制到另一个缓冲区
(函数) [编辑]