mbrlen

Bestimmen Sie die Anzahl der Bytes in einer Zeichenfolge, von der Funktion nötig, wenn ein Neustart in der Mitte eines Mehrbytezeichen bei der Anwendung des aktuellen Gebietsschemas.

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

Parameter

  • str
    Klicken Sie auf NULL endende Zeichenfolge.

  • maxSize
    Die maximale Größe der Zeichenfolge ohne das NULL.

  • mbstate
    Die Verschiebung des Zustands der Konvertierung.

Rückgabewert

Wenn die Zeichenfolge weniger als maxSize Zeichen ist, gibt jede dieser Funktionen die Anzahl der Zeichen in strohne Terminal- NULLzurück.Wenn die Zeichenfolge größer als maxSize Zeichen ist, wird maxSize zurückgegeben.

  • 0
    Wenn die folgende Anzahl von Bytes oder weniger das Mehrbytezeichen abschließen, das das NULL Breitzeichen darstellt.

  • > 0
    Wenn die folgende Anzahl von Bytes oder weniger ein gültiges Mehrbytezeichen ausführen, ist der zurückgegebene Wert die Anzahl der Bytes, die das Mehrbytezeichen abschließen.

  • -1
    Wenn die folgenden Zählbytes in einem unvollständigen Mehrbyten beitragen und alle Zählbytes verarbeitet worden sind.

  • -2
    Wenn ein Codierungsfehler eintritt, in diesem Fall die folgende Anzahl von Bytes oder weniger nicht in den vollständigen und gültigen Mehrbytezeichen beitragen, ist der Wert errno-wert EILSEQ und mehrdeutige Konvertierung Zustand.

Hinweise

Die mbrlen-Funktion bestimmt die Anzahl der Bytes, die die Mehrbytezeichen Sequenz von str, wenn von der Funktion nötig, sowohl mitten in einem Neustart BYTE-festsetzen Zeichen, das maximal maxSize Bytes überprüft.Das mbstate_t-Argument mbstate wird der Verschiebung Zustand zu verfolgen.Wenn diese NULL ist, verwendet mbrlen ein internes, statisches mbstate_t-Objekt.Sie ist gleich bedeutend mit:

mbrtowc(NULL, str, maxSize, mbstate)

Falls nicht, wenn die Groß- und Kleinschreibung von mbstateNULList, mbrlen ein eigenes statisches internes Objekt erstellt, mbstate_t Verschiebung, um den Zustand zu verfolgen.

Die mbrlen-Funktion unterscheidet sich von _mbclen, mblen, _mblen_l durch seine Neustartfähigkeit.Der Zustand der Konvertierung in mbstate für nachfolgende Aufrufe an derselben oder zu einer anderen restartable Funktionen gespeichert.Ergebnisse werden nicht definiert, wenn die Verwendung restartable und nonrestartable Funktionen kombiniert.Beispielsweise kann eine Anwendung wcsrlen statt wcslenverwenden, wenn ein nachfolgender Aufruf von wcsrtombs verwendet, wobei anstelle wcstombs.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

n/a

n/a

mbrlen

n/a

Anforderungen

Routine

Erforderlicher Header

mbrlen

<wchar.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

.NET Framework-Entsprechung

System::::ZeichenfolgeLänge

Siehe auch

Referenz

Zeichenfolgenbearbeitung (CRT)

Gebietsschema