public member function
<string>

std::basic_string::copy

size_type copy (charT* s, size_type len, size_type pos = 0) const;
从字符串复制字符序列
basic_string 对象的当前值的子字符串复制到 s 指向的数组中。该子字符串包含从位置 pos 开始的 len 个字符。

该函数不会在复制内容的末尾附加空字符。

参数

s
指向字符数组的指针。
数组应包含足够的存储空间来存储复制的字符。
len
要复制的字符数(如果字符串较短,则尽可能多地复制字符)。
pos
要复制的第一个字符的位置。
如果它大于字符串长度,则抛出out_of_range
注意:basic_string 中的第一个字符用以下值表示0(不是1).

返回值

复制到 s 指向的数组中的字符数。 这可能等于 lenlength()-pos(如果字符串值短于pos+len).

成员类型size_type是一种无符号整型类型。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
// string::copy
#include <iostream>
#include <string>

int main ()
{
  char buffer[20];
  std::string str ("Test string...");
  std::size_t length = str.copy(buffer,6,5);
  buffer[length]='\0';
  std::cout << "buffer contains: " << buffer << '\n';
  return 0;
}
输出
buffer contains: string


复杂度

与复制的字符数成线性关系。

迭代器有效性

没有变化。

数据竞争

该对象被访问。

异常安全

强保证: 如果抛出异常,则 basic_string 中没有任何更改。

如果 s 没有指向足够长的数组,则会导致未定义行为

如果 pos 大于 字符串长度,则会抛出 out_of_range 异常。

另见