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 ;
(自 C++20 起为 constexpr)

将子串 [ pos , pos + count ) 复制到由 dest 指向的字符串中。若请求的子串超出字符串末尾,或当 count == npos 时,被复制的子串为 [ pos , size() )

生成的字符串不以空字符结尾。

目录

参数

dest - 指向目标字符串的指针
count - 子字符串长度
pos - 起始字符位置

返回值

已复制的字符数。

异常

pos > size ( ) 则抛出 std::out_of_range 异常。

若因任何原因抛出异常,此函数不产生任何效果( 强异常安全保证 )。

复杂度

count 上呈线性关系。

示例

#include <iostream>
#include <string>
int main()
{
    std::string foo("WINE");
    // 花括号初始化将所有字符初始化为0,
    // 提供空终止符
    char bar[4]{};
    // 不复制最后一个字符,确保空终止
    foo.copy(bar, sizeof bar - 1);
    std::cout << bar << '\n'; // 要求bar以空字符结尾
}

输出:

WIN

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

DR 适用范围 发布时的行为 正确行为
LWG 847 C++98 未提供异常安全保证 增加了强异常安全保证

参见

返回子字符串
(公开成员函数)
复制字符
( std::basic_string_view<CharT,Traits> 的公开成员函数)
复制元素范围到新位置
(函数模板)
复制缓冲区到另一个缓冲区
(函数)