std::basic_string<CharT,Traits,Allocator>::copy
来自cppreference.com
< cpp | string | 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++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 847 | C++98 | 没有异常安全保证 | 添加强异常安全保证 |
[编辑]参阅
返回子串 (公开成员函数) | |
复制字符 ( std::basic_string_view<CharT,Traits> 的公开成员函数) | |
(C++11) | 复制范围中元素到新位置 (函数模板) |
复制一个缓冲区到另一个 (函数) |