mbrlen
Déterminez le nombre d'octets dans une chaîne, avec la fonction de redémarrer au milieu d'un caractère multioctets si besoin est, en utilisant les paramètres régionaux.
size_t mbrlen(
const char *str,
size_t maxSize,
mbstate_t mbstate
);
Paramètres
str
Chaîne terminée par le caractère NULL.maxSize
La taille maximale de la chaîne, à l'exception de le caractère NULL de fin.mbstate
l'état de décalage de la conversion.
Valeur de retour
Si la chaîne est moins que des caractères d' maxSize dans la longueur, chacune de ces fonctions retourne le nombre de caractères dans str, à l'exclusion d' NULLterminal.Si la chaîne est plus grande que des caractères d' maxSize dans la longueur, alors maxSize est retourné.
0
Si le nombre suivant ou moins octets finaliser le caractère multioctets qui représente le caractère élargi d' NULL .> 0
Si le nombre suivant ou moins octets en un caractère multioctets valide, la valeur retournée est le nombre d'octets qui finaliser le caractère multioctets.-1
Si les octets suivants de nombre contribuent à un multioctets incomplet et les octets de nombre ont été traités.-2
Si une erreur d'encodage se produit, auquel cas le nombre suivant ou moins octets ne fournissent pas au caractère multioctets terminé et valide, la valeur errno de valeur sera EILSEQ et le rapport de conversion ambiguë.
Notes
La fonction d' mbrlen détermine le nombre d'octets constituant la séquence de caractères multioctets d' str, avec la fonction de redémarrer au milieu d'un caractère multioctets si besoin est, la au plus des octets d' maxSize .L'argument mbstate d' mbstate_t est utilisé pour gérer l'état de décalage.s'il est NULL, mbrlen utilise un objet interne et statique d' mbstate_t .il est équivalent à :
mbrtowc(NULL, str, maxSize, mbstate)
Sauf lorsque le cas d' mbstate est NULL, mbrlen compte lors de sa propre statique, objet interne d' mbstate_t pour gérer l'état de décalage.
la fonction d' mbrlen diffère de _mbclen, mblen, _mblen_l par sa capacité à redémarrer.Le rapport de conversion est stocké dans mbstate pour les appels suivants à la même transparence ou à d'autres fonctions restartable.Les résultats sont indéfinis en combinant l'utilisation des fonctions restartable et nonrestartable.Par exemple, une application utilise wcsrlen plutôt qu' wcslen, si un appel suivant à wcsrtombs où utilisé au lieu d' wcstombs.
mappages de routines de texte générique
routine de TCHAR.H |
_MBCS & de _UNICODE non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
n/a |
n/a |
mbrlen |
n/a |
Configuration requise
routine |
en-tête requis |
---|---|
mbrlen |
<wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// 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);
}
Équivalent .NET Framework
System : : chaîne : : longueur