size_type copy(CharT* s, size_type n, size_type pos = 0) const; // C++17
constexpr size_type copy(CharT* s, size_type n, size_type pos = 0) const; // C++20
概要
他の文字列に、自身の文字列をコピーする。
要件
n
とsize() - pos
のうち、小さい方をrlen
とする。
[s, s + rlen)
が妥当な範囲であり、その範囲内の要素にアクセスできること
効果
以下と等価の処理を行う:
戻り値
rlen
例外
pos > size()
の場合、std::out_of_range
例外を送出する。
例
#include <iostream>
#include <string_view>
int main()
{
const std::string_view sv = "hello";
// 全体をコピーする
{
char result[5 + 1] = {};
sv.copy(result, 5);
std::cout << result << std::endl;
}
// 先頭3要素だけコピーする
{
char result[3 + 1] = {};
sv.copy(result, 3);
std::cout << result << std::endl;
}
// 2番目以降の要素をコピーする
{
char result[3 + 1] = {};
sv.copy(result, 3, 2);
std::cout << result << std::endl;
}
}
xxxxxxxxxx
#include <iostream>
#include <string_view>
int main()
{
const std::string_view sv = "hello";
// 全体をコピーする
{
char result[5 + 1] = {};
sv.copy(result, 5);
std::cout << result << std::endl;
}
// 先頭3要素だけコピーする
{
char result[3 + 1] = {};
sv.copy(result, 3);
std::cout << result << std::endl;
}
// 2番目以降の要素をコピーする
{
char result[3 + 1] = {};
sv.copy(result, 3, 2);
std::cout << result << std::endl;
}
}
出力
hello
hel
llo
バージョン
言語
- C++17
処理系
- Clang: 4.0 ✅
- GCC: 7.1 ✅
- ICC: ??
- Visual C++: ??