Namespaces
Variants

wcslen, wcsnlen_s

From cppreference.net
< c ‎ | string ‎ | wide
定義先ヘッダ <wchar.h>
size_t wcslen ( const wchar_t * str ) ;
(1) (C95以降)
size_t wcsnlen_s ( const wchar_t * str, size_t strsz ) ;
(2) (C11以降)
1) ワイド文字列の長さを返します。つまり、終端のナルワイド文字の前に続く非ナルワイド文字の数です。
2) (1)と同様であるが、 str がヌルポインタの場合に関数はゼロを返し、 src の最初の strsz 個のワイド文字中にヌルワイド文字が見つからなかった場合には strsz を返す点が異なる。
すべての境界チェック付き関数と同様に、 wcslen_s は、実装によって __STDC_LIB_EXT1__ が定義されており、かつユーザーが <stdio.h> をインクルードする前に __STDC_WANT_LIB_EXT1__ を整数定数 1 に定義している場合にのみ利用可能であることが保証される。

目次

パラメータ

str - 検査対象のヌル終端ワイド文字列へのポインタ
strsz - 検査するワイド文字の最大数

戻り値

1) ヌル終端ワイド文字列 str の長さ。
2) 成功時はヌル終端ワイド文字列 str の長さ、 str がヌルポインタの場合はゼロ、 strsz はヌルワイド文字が見つからなかった場合。

注記

strnlen_s および wcsnlen_s は、ランタイム制約ハンドラを呼び出さない唯一の 境界チェック関数 です。これらは、非ヌル終端文字列に対する限定的なサポートを提供するために使用される純粋なユーティリティ関数です。

#include <wchar.h>
#include <stdio.h>
int main(void)
{
    wchar_t str[] = L"How many wide characters does this string contain?";
    printf("without null character: %zu\n", wcslen(str));
    printf("with null character: %zu\n", sizeof str / sizeof *str);
}

出力:

without null character: 50
with null character: 51

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.29.4.6.1 wcslen関数 (p: 439)
  • K.3.9.2.4.1 wcsnlen_s関数 (p: 646-647)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.24.4.6.1 wcslen関数 (p: 385)

関連項目

指定された文字列の長さを返す
(関数)