_mbsnbcnt、_mbsnbcnt_l、_mbsnccnt、_mbsnccnt_l、_strncnt、_wcsncnt
指定したカウント内で文字数またはバイト数を返します。
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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。