Namespaces
Variants

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

From ja.cppreference.net
 
 
 
std::basic_string
 
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
(C++20 から constexpr)

部分文字列 [pos, pos + count) を、dest が指す文字配列にコピーします。要求された部分文字列が文字列の終わりを超える場合、または count == npos の場合、コピーされる部分文字列は [pos, size()) になります。

結果の文字配列は null 終端されません。

パラメータ

dest - 宛先文字列へのポインタ
count - 部分文字列の長さ
pos - 含める最初の文字の位置

戻り値

コピーされた文字数。

例外

std::out_of_range posが pos > size ( ) の場合。

何らかの理由で例外がスローされた場合、この関数は何も効果を持ちません( strong exception safety guarantee )。

計算量

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>のパブリックメンバ関数)
要素の範囲を新しい位置にコピーする
(関数テンプレート & アルゴリズム関数オブジェクト)
バッファを別のバッファにコピーする
(関数)