std::basic_string<CharT,Traits,Allocator>::copy
From cppreference.com
< cpp | string | 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) | |
| (C++11) |
要素の範囲を新しい場所にコピーする (関数テンプレート) |
| あるバッファを別のバッファにコピーする (関数) |