Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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);
}