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

履歴 編集

function
<cstring>

std::memccpy(C++26)

namespace std {
  void* memccpy(void* s1, const void* s2, int c, size_t n);
}

概要

メモリデータを、指定した文字が現れるまでコピーする。

C23で<string.h>に追加された関数であり、C++26で<cstring>に取り込まれた。

この関数はフリースタンディング環境でも提供される。

効果

s2が指すオブジェクトからs1が指すオブジェクトへ、文字c (unsigned charに変換される) が最初に現れてコピーされるまで、もしくはnバイトをコピーするまで、いずれか早いほうまでバイトをコピーする。

コピー元とコピー先の領域が重なっている場合、動作は未定義である。

戻り値

コピー先s1において、コピーされた文字cの次の位置を指すポインタを返す。

s2の先頭nバイトに文字cが見つからなかった場合、ヌルポインタを返す。

#include <cstring>
#include <iostream>

int main()
{
  const char src[] = "abc/def";
  char dst[8] = {};

  // '/'が現れるまでコピーする
  char* p = static_cast<char*>(std::memccpy(dst, src, '/', sizeof(dst)));

  std::cout << dst << std::endl;
  std::cout << (p != nullptr ? "found" : "not found") << std::endl;
}

出力

abc/
found

バージョン

言語

  • C++26

処理系

関連項目

  • memcpy: メモリデータをコピーする
  • memmove: メモリデータをコピーする(領域重複可)

参照