Udostępnij za pośrednictwem


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

Odpowiednik w programie .NET Framework

System::String::length

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

Ustawienia regionalne