Поделиться через


_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l

Возвращает число символов или байтов в пределах указанного числа.

Важно!

_mbsnbcnt, _mbsnbcnt_l, _mbsnccnt и _mbsnccnt_l невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.

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 завершен, они возвращают число байт или символов перед нуль-символом. Если str состоит из меньше, чем count символов или байт, то они возвращают число символов или байтов в строке. Если count меньше нуля, то они возвращают 0. В предыдущих версиях этих функций их возвращаемое значение было типа int вместо типа size_t.

_strncnt возвращает число символов в первых count байтах однобайтовой строки str. _wcsncnt возвращает число символов в первых count расширенных символах строки расширенных символов str.

Заметки

_mbsnbcnt и _mbsnbcnt_l подсчитывают количество байтов, содержащихся в первых count многобайтовых символах строки str. _mbsnbcnt и _mbsnbcnt_l заменяют mtob и должны использоваться вместо mtob.

_mbsnccnt и _mbsnccnt_l подсчитывают количество символов, содержащихся в первых count байтах строки str. Если _mbsnccnt и _mbsnccnt_l обнаруживают 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>

Дополнительные сведения о совместимости см. в разделе Совместимость.

Пример

// 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");
}

Output

The first 10 characters are single-byte.

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Управление строками (CRT)

Языковой стандарт

Интерпретация последовательностей в многобайтной кодировке

_mbsnbcat, _mbsnbcat_l