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

来自cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
std::basic_string
成员函数
元素访问
迭代器
容量
操作
basic_string::copy
搜索
常量
推导指引 (C++17)
非成员函数
I/O
比较
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20)
数值转换
(C++11)(C++11)(C++11)
(C++11)(C++11)    
(C++11)(C++11)(C++11)
(C++11)
(C++11)
辅助类
 
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 起)

复制子串 [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 没有异常安全保证 添加强异常安全保证

参阅

返回子串
(公开成员函数)