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