mbrlen
Określa liczbę bajtów w ciągu, z możliwością ponownego uruchamiania w środku znaków wielobajtowych, jeśli potrzeba, podczas korzystania z bieżące ustawienia regionalne.
size_t mbrlen(
const char *str,
size_t maxSize,
mbstate_t mbstate
);
Parametry
str
Ciąg zakończony znakiem null.maxSize
Maksymalny rozmiar ciąg znaków, z wyłączeniem kończącego znaku null.mbstate
Stan shift konwersji.
Wartość zwracana
Jeśli ciąg jest mniejsza niż maxSize znaków długości, każda z tych funkcji zwraca liczbę znaków w str, z wyłączeniem terminalu NULL.Jeśli ciąg jest większa niż maxSize znaków długości, a następnie maxSize jest zwracany.
0
Licznik następnego lub mniejszej liczby bajtów wykonać znaków wielobajtowych, która reprezentuje NULL szerokości znaków.> 0
Jeśli licznik następnego lub mniejszej liczby bajtów ukończyć prawidłowych znaków wielobajtowych, wartość zwracana jest liczba bajtów, które ukończyć znaków wielobajtowych.-1
Jeśli dalej bajtów count przyczyniają się do niekompletnych wielobajtowe i wszystkie Licznik Bajty zostały przetworzone.-2
Jeśli wystąpi błąd kodowania, w którym to przypadku dalej count lub mniejszej liczby bajtów nie przyczyniają się do znaków wielobajtowych kompletne i prawidłowe wartość errno będzie EILSEQ i niejednoznaczne stan konwersji.
Uwagi
mbrlen Funkcja określa liczbę bajtów, stanowiące sekwencja znaków wielobajtowych str, z możliwością ponownego uruchamiania w środku wielobajtowego znaków, jeśli potrzeba, badanie co najwyżej maxSize bajtów.mbstate_t Argument mbstate jest używany do śledzenia stanu shift.Jeśli ma wartość NULL, mbrlen używa wewnętrznego, statyczne mbstate_t obiektu.Jest to równoważne:
mbrtowc(NULL, str, maxSize, mbstate)
Z wyjątkiem sytuacji gdy przypadek mbstate jest NULL, mbrlen , opiera się na własnych static wewnętrznego mbstate_t obiektu do śledzenia stanu shift.
mbrlen Funkcja różni się od _mbclen, mblen, _mblen_l przez jego restartability.Stan konwersji jest przechowywany w mbstate dla kolejnych zaproszeń na to samo lub inne funkcje Przerywalne.Wyniki są niezdefiniowane, przy użyciu funkcji Przerywalne i nonrestartable.Na przykład, aplikacja będzie korzystać z wcsrlen zamiast wcslen, jeśli kolejne wywołania wcsrtombs w przypadku, gdy używana zamiastwcstombs.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
n/a |
n/a |
mbrlen |
n/a |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
mbrlen |
<wchar.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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);
}