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

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
 
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
(C++20 起为 constexpr)

复制子串 [pospos + count)dest 指向的字符串。如果请求的子串越过字符串结尾,或 count == npos,那么复制的子串是 [possize())

产生的字符串不是空���止的。

目录

[编辑] 参数

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++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 847 C++98 没有异常安全保证 添加强异常安全保证

[编辑] 参阅

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