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 size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const; |
(C++20 起) | |
复制子串 [
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 | 没有异常安全保证 | 添加强异常安全保证 |
参阅
返回子串 (公开成员函数) |