Namespaces
Variants

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

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

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

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

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Parameters, Return value, Exceptions, Complexity, Example, Defect reports, See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、IDなどは一切変更していません - 数値や構造は完全に保持されています

パラメータ

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> の公開メンバ関数)
要素の範囲を新しい場所にコピーする
(関数テンプレート)
バッファを別のバッファにコピーする
(関数)