std::basic_string<CharT,Traits,Allocator>::copy
来自 zh.cppreference.net
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>的公开成员函数)
| |
(C++11) |
将元素范围复制到新位置 (函数模板 & 算法函数对象) |
(C++20)(C++20) |
|
| 将一个缓冲区复制到另一个 (函数) |