_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt、_mbsnccnt_l、_strncnt、_wcsncnt

更新 : 2007 年 11 月

指定したカウント内で文字数またはバイト数を返します。

size_t _mbsnbcnt(
   const unsigned char *str,
   size_t count 
);
size_t _mbsnbcnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);
size_t _mbsnccnt(
   const unsigned char *str,
   size_t count
);
size_t _mbsnccnt_l(
   const unsigned char *str,
   size_t count,
   _locale_t locale
);
size_t _strncnt(
   const char *str,
   size_t count
);
size_t _wcsncnt(
   const wchar_t *str,
   size_t count
);

パラメータ

  • str
    確認する文字列。

  • count
    str 内で確認する文字数またはバイト数。

  • locale
    使用するロケール。

戻り値

_mbsnbcnt と _mbsnbcnt_l は、str に含まれる最初の count マルチバイト文字のバイト数を返します。_mbsnccnt と _mbsnccnt_l は、str に含まれる最初の count バイトの文字数を返します。str のチェックが完了する前に NULL 文字が検出された場合は、NULL 文字の前にあるバイト数または文字数を返します。str を構成する文字数またはバイト数が count の値よりも少ない場合は、文字列内の文字数またはバイト数を返します。count の値が 0 より小さい場合は、0 を返します。以前のバージョンでは、これらの関数の戻り値は size_t 型ではなく、int 型でした。

_strncnt は、1 バイト文字列 str に含まれる最初の count の文字数を返します。_wcsncnt は、ワイド文字列 str に含まれる最初の count ワイド文字の文字数を返します。

解説

_mbsnbcnt と _mbsnbcnt_l は、str に含まれる最初の count マルチバイト文字のバイト数をカウントします。_mbsnbcnt と _mbsnbcnt_l は、mtob を置き換える関数です。mtob の代わりにこれらの関数を使用してください。

_mbsnccnt と _mbsnccnt_l 関数は、str に格納された最初の count バイトの文字数をカウントします。_mbsnccnt と _mbsnccnt_l 関数が 2 バイト文字の 2 番目のバイトで NULL を検出すると、最初のバイトも NULL であると見なされ、結果には含まれません。_mbsnccnt と _mbsnccnt_l は btom を置き換える関数です。btom の代わりにこれらの関数を使用してください。

str が null ポインタであるか、または count が 0 の場合、「パラメータの検証」に説明されているように、関数は無効なパラメータ ハンドラを呼び出し、errno を EINVAL に設定して 0 を返します。

出力値は、ロケールの LC_CTYPE カテゴリの設定で決まります。詳細については、「setlocale」を参照してください。これらの関数のうち _l サフィックスが付いていないバージョンでは、現在のロケールを使用してロケール依存の動作を行います。_l サフィックスが付いているバージョンは、渡されたロケール パラメータを代わりに使用する点を除いて同じです。詳細については、「ロケール」を参照してください。

汎用テキスト ルーチンのマップ

ルーチン

_UNICODE および _MBCS が未定義の場合

_MBCS が定義されている場合

_UNICODE が定義されている場合

_tcsnbcnt

_strncnt

_mbsnbcnt

_wcsncnt

_tcsnccnt

_strncnt

_mbsnbcnt

 n/a

_wcsncnt

 n/a

 n/a

_mbsnbcnt

_wcsncnt

 n/a

 n/a

_mbsnccnt

n/a

n/a

_mbsnbcnt_l

_mbsnccnt_l

必要条件

ルーチン

必須ヘッダー

_mbsnbcnt

<mbstring.h>

_mbsnbcnt_l

<mbstring.h>

_mbsnccnt

<mbstring.h>

_mbsnccnt_l

<mbstring.h>

_strncnt

<tchar.h>

_wcsncnt

<tchar.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

// crt_mbsnbcnt.c

#include  <mbstring.h>
#include  <stdio.h>

int main( void )
{
   unsigned char str[] = "This is a multibyte-character string.";
   unsigned int char_count, byte_count;
   char_count = _mbsnccnt( str, 10 );
   byte_count = _mbsnbcnt( str, 10 );
   if ( byte_count - char_count )
      printf( "The first 10 characters contain %d multibyte characters\n", char_count );
   else
      printf( "The first 10 characters are single-byte.\n");
}

出力

The first 10 characters are single-byte.

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

文字列操作 (CRT)

ロケール

マルチバイト文字のシーケンスの解釈

_mbsnbcat、_mbsnbcat_l