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が見つからなかった場合、ヌルポインタを返す。
例
出力
abc/
found
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
memcpy: メモリデータをコピーするmemmove: メモリデータをコピーする(領域重複可)
参照
- P3348R4 C++26 should refer to C23 not C17
- C++26がC23を参照するようになり、この関数が
<cstring>に追加された
- C++26がC23を参照するようになり、この関数が