_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 文字の前に見つかったバイト数または文字数が返されます。 strcount の文字数またはバイト数よりも少ない数で構成されている場合は、文字列の文字数またはバイト数を返します。 count が 0 より小さい場合は、0 を返します。 以前のバージョンでは、これらの関数は、int 型ではなく size_t 型の戻り値を使用していました。

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

解説

_mbsnbcnt_mbsnbcnt_l は、count の最初の str マルチバイト文字で見つかったバイト数をカウントします。 _mbsnbcnt_mbsnbcnt_lmtob の代わりとなる関数です。この 2 つの関数は mtob の代わりに使用する必要があります。

_mbsnccnt_mbsnccnt_l は、count の最初の str バイトで見つかった文字数をカウントします。 _mbsnccnt_l 2 バイト文字の 2 番目のバイトで null 文字が検出された場合_mbsnccnt、最初のバイトも null と見なされ、返されるカウント値には含まれません。 _mbsnccnt_mbsnccnt_lbtom の代わりとなる関数です。この 2 つの関数は btom の代わりに使用する必要があります。

NULLポインターまたは 0 のcount場合str、これらの関数は、「パラメーターの検証」の説明に従って無効なパラメーター ハンドラーを呼び出し、次のようにEINVAL設定され、errno関数は 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.

関連項目

文字列操作
ロケール
マルチバイト文字シーケンスの解釈
_mbsnbcat, _mbsnbcat_l