mbrlen

Determine el número de bytes en una cadena, con la capacidad de reiniciar en medio de un carácter multibyte si fuera necesario, mientras utiliza la configuración regional actual.

size_t mbrlen(
   const char *str,
   size_t maxSize,
   mbstate_t mbstate
);

Parámetros

  • str
    Cadena terminada en null.

  • maxSize
    El tamaño máximo de la cadena, excepto el carácter null de terminación.

  • mbstate
    El estado del cambio de la conversión.

Valor devuelto

Si la cadena es menor que los caracteres de maxSize long, cada una de estas funciones devuelve el número de caracteres de str, excepto NULLterminal.Si la cadena es mayor que los caracteres de maxSize long, se devuelve maxSize .

  • 0
    Si el número siguiente bytes o menos completa el carácter multibyte que representa el carácter ancho de NULL .

  • > 0
    Si el número siguiente bytes o menos completa un carácter válido multibyte, el valor devuelto es el número de bytes que se complete el carácter multibyte.

  • -1
    Si los bytes siguientes de recuento contribuyen a un multibyte incompleto y todos los bytes del recuento se han procesado.

  • -2
    Si un error de codificación aparece, en cuyo caso el número siguiente o menos bytes no contribuye al carácter completo válido y multibyte, el valor de errno de valor se EILSEQ y el estado de conversión ambigua.

Comentarios

La función de mbrlen determina el número de bytes que constituyen la secuencia de caracteres multibyte de str, con la capacidad de reiniciar en medio de un carácter multibyte si fuera necesario, busque más bytes de maxSize .El argumento mbstate de mbstate_t se utiliza para el seguimiento del estado del cambio.si es NULL, mbrlen utiliza un objeto interno, estático de mbstate_t .Equivale a:

mbrtowc(NULL, str, maxSize, mbstate)

Excepto cuando el caso de mbstate es NULL, mbrlen confíe en su propio objeto estático, interno de mbstate_t para el seguimiento del estado del cambio.

la función de mbrlen diferencia de _mbclen, mblen, _mblen_l por su restartability.Almacena el estado de la conversión en mbstate para las llamadas subsiguientes igual o a otras funciones reiniciables.Los resultados son indefinidos al mezclar el uso de funciones reiniciables y nonrestartable.Por ejemplo, una aplicación utilizaría wcsrlen en lugar de wcslen, si una llamada subsiguiente a wcsrtombs donde se utiliza en lugar de wcstombs.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

n/a

n/a

mbrlen

n/a

Requisitos

rutina

Encabezado necesario

mbrlen

<wchar.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

// crt_mbrlen.c

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <wchar.h>

size_t Example(const char * pStr)
{
    size_t      charLen = 0;
    size_t      charCount = 0;
    mbstate_t   mbState;

    memset(&mbState, 0, sizeof(mbState));
    
    while ((charLen = mbrlen(pStr, MB_CUR_MAX, &mbState)) != 0 &&
            charLen != (size_t)-1 && charLen != (size_t)-2)
    {
        pStr += charLen;
        charCount++;
    } 

    return (charCount);
} 

int main( void )
{
    size_t      charCount = 0;
    const char  *pSample = "Every good boy does fine.";

    charCount = Example(pSample);
    printf("%s\nLength: %d\n", pSample, charCount);
}
  
  

Equivalente en .NET Framework

System:: cadena:: longitud

Vea también

Referencia

Manipulación de cadenas (CRT)

Configuración regional