_strncnt
、 _wcsncnt
、 _mbsnbcnt
、 _mbsnbcnt_l
、 _mbsnccnt
、 _mbsnccnt_l
指定されたカウント内で文字数またはバイト数を返します。
重要
_mbsnbcnt
、_mbsnbcnt_l
、_mbsnccnt
、および _mbsnccnt_l
は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。
構文
size_t _strncnt(
const char *str,
size_t count
);
size_t _wcsncnt(
const wchar_t *str,
size_t count
);
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
);
パラメーター
str
調査する文字列。
count
str
で調査する文字数またはバイト数。
locale
使用するロケール。
戻り値
_mbsnbcnt
と _mbsnbcnt_l
は、count
の最初の str
マルチバイト文字で見つかったバイト数を返します。 _mbsnccnt
と _mbsnccnt_l
は、count
の最初の str
バイトで見つかった文字数を返します。 str
の検査が完了する前に null 文字が見つかった場合は、null 文字の前に見つかったバイト数または文字数が返されます。 str
が count
の文字数またはバイト数よりも少ない数で構成されている場合は、文字列の文字数またはバイト数を返します。 count
が 0 より小さい場合は、0 を返します。 以前のバージョンでは、これらの関数は、int
型ではなく size_t
型の戻り値を使用していました。
_strncnt
は、1 バイト文字列 count
の最初の str
バイトにある文字数を返します。 _wcsncnt
は、ワイド文字列 count
の最初の str
ワイド文字にある文字数を返します。
解説
_mbsnbcnt
と _mbsnbcnt_l
は、count
の最初の str
マルチバイト文字で見つかったバイト数をカウントします。 _mbsnbcnt
と _mbsnbcnt_l
は mtob
の代わりとなる関数です。この 2 つの関数は mtob
の代わりに使用する必要があります。
_mbsnccnt
と _mbsnccnt_l
は、count
の最初の str
バイトで見つかった文字数をカウントします。 _mbsnccnt
し、2 バイト文字の 2 バイト目に null 文字が_mbsnccnt_l
場合、最初のバイトも null と見なされ、返されるカウント値には含まれません。 _mbsnccnt
と _mbsnccnt_l
は btom
の代わりとなる関数です。この 2 つの関数は btom
の代わりに使用する必要があります。
str
がNULL
ポインターであるか、count
が 0 の場合、これらの関数は、パラメーター検証で説明されているように無効なパラメーター ハンドラーを呼び出し、errno
を EINVAL
に設定し、関数は 0 を返します。
出力値は、ロケールの LC_CTYPE
カテゴリ設定の設定によって影響を受けます。 詳細については、setlocale
を参照してください。 _l
サフィックスが付いていないこれらの関数のバージョンでは、このロケールに依存する動作に現在のロケールを使用します。_l
サフィックスが付いているバージョンは、渡されたロケール パラメーターを代わりに使用する点を除いて同じです。 詳細については、「 Locale」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
ルーチンによって返される値 | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcsnbcnt |
_strncnt |
_mbsnbcnt |
_wcsncnt |
_tcsnccnt |
_strncnt |
_mbsnbcnt |
該当なし |
_wcsncnt |
なし | なし | _mbsnbcnt |
_wcsncnt |
なし | なし | _mbsnccnt |
なし | 該当なし | _mbsnbcnt_l |
_mbsnccnt_l |
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_mbsnbcnt |
<mbstring.h> |
_mbsnbcnt_l |
<mbstring.h> |
_mbsnccnt |
<mbstring.h> |
_mbsnccnt_l |
<mbstring.h> |
_strncnt |
<tchar.h> |
_wcsncnt |
<tchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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.