<cstring>ヘッダ †
マクロ †
NULL †
空ポインタ定数
解説
処理系定義の空ポインタ定数を表すマクロ。0 や 0L に定義される可能性はあるが、(void*)0 に定義されることはない。
参考
NULL マクロは、<cstring>ヘッダ以外に、<cstddef>ヘッダ、<clocale>ヘッダ、<cstdio>ヘッダ、<cstdlib>ヘッダ、<ctime>ヘッダ、および<cwchar>ヘッダでも定義される。
型 †
size_t †
サイズの型
解説
sizeof 演算子?の結果の型。処理系定義の符号なし整数型に定義される。
参考
size_t 型は、<cstring>ヘッダ以外に、<cstddef>ヘッダ、<cstdio>ヘッダ、<cstdlib>ヘッダ、<ctime>ヘッダ、および<cwchar>ヘッダでも定義される。
関数 †
memchr †
メモリブロック内の文字探索
形式
void* memchr(void* s, int c, size_t n);
const void* memchr(const void* s, int c, size_t n);
引数
s: メモリブロック
c: 探索する文字 (0 〜 UCHAR_MAX)
n: メモリブロックのサイズ (バイト数)
返却値
文字が見つかった場合はその要素へのポインタを返す。見つからなかった場合は空ポインタ?を返す。
解説
s で指定したメモリブロックの先頭から n バイトを順に探索し、c に一致する要素を見つける。
参照
→ wmemchr
memcmp †
メモリブロックの単純比較
形式
int memcmp(const void* s1, const void* s2, size_t n);
引数
s1: 比較対象のメモリブロック 1
s2: 比較対象のメモリブロック 2
n: 比較するサイズ (バイト数)
返却値
s1 が s2 より小さいときは負の値を返す。s1 が s2 より大きいときは正の値を返す。一致していた場合は 0 を返す。
2 つのメモリブロックの各文字を unsigned char 型として比較する。
memcpy †
形式
void* memcpy(void* s1, const void* s2, size_t n);
memmove †
形式
void* memmove(void* s1, const void* s2, size_t n);
memset †
メモリブロックの設定
形式
void* memset(void* s, int c, size_t n);
引数
s: メモリブロック
c: 設定する文字
n: メモリブロックのサイズ (バイト数)
返却値
s を返す。
解説
s が指す n バイトのメモリブロックを c の値に設定する。s が指す配列の実際の大きさを超えて書き込みが発生した場合の[[動作は
未定義>未定義の動作]]である。
参照
→ wmemset
strcat †
形式
char* strcat(char* s1, const char* s2);
strchr †
形式
char* strchr(char* s, int c);
const char* strchr(const char* s, int c);
strcmp †
形式
int strcmp(const char* s1, const char* s2);
strcoll †
形式
int strcmp(const char* s1, const char* s2);
strcpy †
形式
char* strcpy(char* s1, const char* s2);
strcspn †
特定文字群以外で構成される先頭部分の長さ
形式
size_t strcspn(const char* s1, const char* s2);
返却値
先頭部分の長さを返す。
解説
s1 が指す文字列に?ついて、s2 が指す文字群に含まれる文字以外で構成される先頭部分の長さを返す。
例
#include <cstring> #include <iostream> int main() { std::cout << std::strspn("baabbcdebevjr", "cde") << std::endl; }
実行結果 5
strerror †
形式
char* strerror(int errnum);
strlen †
文字列の長さ
形式
size_t strlen(const char* s);
引数
s: 文字列
返却値
文字列の長さを返す。
解説
s が指す文字列の長さ (文字数) を返す。終端のナル文字は長さに含めない。
参照
→ wcslen
strncat †
形式
char* strncat(char* s1, const char* s2, size_t n);
strncmp †
形式
int strncmp(const char* s1, const char* s2, size_t n);
strncpy †
形式
char* strncpy(char* s1, const char* s2, size_t n);
strpbrk †
形式
char* strpbrk(const char* s1, const char* s2);
strrchr †
形式
char* strrchr(char* s, int c);
const char* strrchr(const char* s, int c);
strspn †
特定文字群のみで構成される先頭部分の長さ
形式
size_t strspn(const char* s1, const char* s2);
返却値
先頭部分の長さを返す。
解説
s1 が指す文字列について、s2 が指す文字群に含まれる文字のみで構成される先頭部分の長さを返す。
例
#include <cstring> #include <iostream> int main() { std::cout << std::strspn("baabbcdebevjr", "abc") << std::endl; }
実行結果 6
strstr †
部分文字列の探索
形式
char* strstr(char* s1, const char* s2);
const char* strstr(const char* s1, const char* s2);
返却値
部分文字列が見つかった場合はその位置のポインタ?を返す。見つからなかった場合は空ポインタ?を返す。
解説
s1 が指す文字列から s2 が指す部分文字列を見つける。
参考
C とは異なり、const 修飾? の有無により、2 つの形式が多重定義されている。
参照
→ wcsstr?
strtok †
形式
char* strtok(char* s1, const char* s2);
strxfrm †
文化圏固有の形式に変形
形式
size_t strxfrm(char* s1, const char* s2, size_t n);
引数
s1: 結果の格納先
s2: 元の文字列
n: 変形する文字数
解説
s1 の先頭から n 文字を文化圏固有の形式に変換し、s1 に格納する。s1 には n を超える文字が書き込まれることはない。返却値が n より大きい場合、s1 が指す配列の内容は未規定である。n が 0 の場合、s1 は空ポインタ?であってもよい。s1 が指す配列の実際の大きさを超えて書き込みが発生した場合の動作は未定義である。
strxfrm で変形された文字列同士を strcmp で比較することは、元の文字列同士を strcoll で比較することと等価である。
参照 †
Last-modified: Sat, 03 Dec 2005 23:07:43 JST (5566d)