Skip to content

Latest commit

 

History

History
73 lines (52 loc) · 1.92 KB

File metadata and controls

73 lines (52 loc) · 1.92 KB

strndup

  • cstring[meta header]
  • std[meta namespace]
  • function[meta id-type]
  • cpp26[meta cpp]
namespace std {
  char* strndup(const char* s, size_t size);
}
  • size_t[link /reference/cstddef/size_t.md]

概要

文字列を、上限サイズを指定して複製する。

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

効果

std::malloc()を呼び出したときと同様に確保した領域に、sが指す配列の先頭から最大size文字、もしくは最初のヌル文字までのいずれか短いほうで初期化した文字列を作成する。

sが指す配列の先頭size文字にヌル文字が含まれない場合、複製の末尾にヌル文字が付加される。

戻り値

作成した文字列の先頭文字へのポインタを返す。

返されたポインタはstd::free()に渡すことができる。

領域を確保できなかった場合、ヌルポインタを返す。

#include <cstring>
#include <cstdlib>
#include <iostream>

int main()
{
  char* p = std::strndup("hello world", 5);
  std::cout << p << std::endl;
  std::free(p);
}
  • std::strndup[color ff0000]
  • std::free[link /reference/cstdlib/free.md]

出力

hello

バージョン

言語

  • C++26

処理系

関連項目

参照