名前空間
変種
操作

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

From cppreference.com
< cpp‎ | string‎ | basic string
 
 
 
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())` となります。

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

目次

[編集] パラメーター

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

[編集] 戻り値

コピーされた文字数。

[編集] 例外

pos > size() の場合、std::out_of_range

何らかの理由で例外がスローされた場合、この関数は効果がありません(強力な例外安全保証)。

[編集] 計算量

count に対して線形。

[編集]

#include <iostream>
#include <string>
 
int main()
{
    std::string foo("WINE");
 
    // brace-initialization initializes all characters to 0,
    // providing a null-terminator
    char bar[4]{};
 
    // do not copy the last char, to guarantee null-termination
    foo.copy(bar, sizeof bar - 1);
 
    std::cout << bar << '\n'; // requires bar to be null-terminated
}

出力

WIN

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 847 C++98 例外安全性保証がなかった 強力な例外安全性保証を追加

[編集] 関連項目

部分文字列を返す
(public member function) [編集]
文字をコピーする
(std::basic_string_view<CharT,Traits> の public member function) [編集]
要素の範囲を新しい場所にコピーする
(関数テンプレート) [編集]
あるバッファを別のバッファにコピーする
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)