Namespaces
Variants

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

来自 zh.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>的公开成员函数)
将元素范围复制到新位置
(函数模板 & 算法函数对象)
将一个缓冲区复制到另一个
(函数)