最終更新日時(UTC):
が更新

履歴 編集

function
<string>

std::char_traits::move

static char_type* move(char_type* s1,
                       const char_type* s2,
                       std::size_t n);                // (1) C++03

static constexpr char_type* move(char_type* s1,
                                 const char_type* s2,
                                 std::size_t n);      // (1) C++20

概要

文字列s1に文字列s2をコピーする。

効果

範囲[0, n)の各iについて、assign(s1[i], s2[i])を実行する。
この関数は、範囲[s1, s1+n)と範囲[s2, s2+n)が重なっていても正しくコピーされる。

戻り値

コピー完了後のs1を返す。

計算量

線形時間

#include <iostream>
#include <string>

int main()
{
  const std::size_t n = 5 + 1;
  char s[n] = "abcde";

  {
    char result[n];
    std::char_traits<char>::move(result, s, n);

    std::cout << result << std::endl;
  }

  // 範囲が重なっていた場合でも正しくコピーされる
  {
    std::char_traits<char>::move(s, s, n);
    std::cout << s << std::endl;
  }
}

出力例

abcde
abcde

参照