Freigeben über


strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

Ruft die Länge einer Zeichenfolge mithilfe des aktuellen Gebietsschemas oder einem angegebenen Gebietsschema ab. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu finden Sie unter strnlen, strnlen_s, wcsnlen, wcsnlen_s, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l.

Wichtig

_mbslen, _mbslen_l, _mbstrlen und _mbstrlen_l können nicht in Anwendungen eingesetzt werden, die in Windows-Runtime ausgeführt werden.Weitere Informationen finden Sie unter CRT-Funktionen nicht mit /ZW unterstützt.

size_t strlen(    const char *str ); size_t wcslen(    const wchar_t *str  ); size_t _mbslen(    const unsigned char *str  ); size_t _mbslen_l(    const unsigned char *str,    _locale_t locale ); size_t _mbstrlen(    const char *str ); size_t _mbstrlen_l(    const char *str,    _locale_t locale );

Parameter

  • str
    Mit NULL endende Zeichenfolge.

  • locale
    Zu verwendendes Gebietsschema.

Rückgabewert

Jede dieser Funktionen gibt die Anzahl der Zeichen in str zurück, ohne das abschließende NULL-Zeichen. Es ist kein Rückgabewert zur Fehleranzeige reserviert, mit Ausnahme von _mbstrlen und _mbstrlen_l, die ((size_t)(-1)) zurückgeben, wenn die Zeichenfolge ein ungültiges Multibytezeichen enthält.

Hinweise

strlen interpretiert die Zeichenfolge als Einzelbytezeichenfolge, sodass der Rückgabewert immer der Anzahl von Bytes entspricht, selbst wenn die Zeichenfolge Multibytezeichen enthält. wcslen ist eine Breitzeichenversion von strlen. Das Argument von wcslen ist eine Zeichenfolge mit Breitzeichen, und die Anzahl von Zeichen wird in (2-Byte-)Breitzeichen angegeben. wcslen und strlen verhalten sich andernfalls identisch.

Sicherheitshinweis    Diese Funktionen stellen eine mögliche Bedrohung aufgrund eines Pufferüberlaufproblems dar. Pufferüberlaufprobleme werden häufig bei Systemangriffen eingesetzt, da sie zu einer unbefugten Ausweitung der Berechtigungen führen. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE und _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen

_mbslen_l

wcslen

_mbslen und _mbslen_l geben die Anzahl von Multibytezeichen in einer Multibyte-Zeichenfolge zurück, überprüfen jedoch nicht die Gültigkeit der Multibytezeichen. _mbstrlen und _mbstrlen_l überprüfen die Gültigkeit von Multibytezeichen und erkennen Multibyte-Zeichenfolgen. Wenn die an _mbstrlen oder _mbstrlen_l übergebene Zeichenfolge ein ungültiges Multibytezeichen für die Codepage enthält, gibt sie "– 1" zurück und legt errno auf EILSEQ fest.

Der Ausgabewert ist von der LC_CTYPE-Kategorieneinstellung des Gebietsschemas betroffen; weitere Informationen finden Sie unter setlocale. Die Versionen dieser Funktionen ohne das _l-Suffix verwenden das aktuelle Gebietsschema für dieses vom Gebietsschema abhängige Verhalten; die Versionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch stattdessen den ihnen übergebenen Gebietsschemaparameter. Weitere Informationen finden Sie unter Locale.

Anforderungen

Routine

Erforderlicher Header

strlen

<string.h>

wcslen

<string.h> oder <wchar.h>

_mbslen, _mbslen_l

<mbstring.h>

_mbstrlen, _mbstrlen_l

<stdlib.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

// crt_strlen.c
// Determine the length of a string. For the multi-byte character
// example to work correctly, the Japanese language support for
// non-Unicode programs must be enabled by the operating system.


#include <string.h>
#include <locale.h>

int main()
{
   char* str1 = "Count.";
   wchar_t* wstr1 = L"Count.";
   char * mbstr1;
   char * locale_string;

   // strlen gives the length of single-byte character string
   printf("Length of '%s' : %d\n", str1, strlen(str1) );

   // wstrlen gives the length of a wide character string
   wprintf(L"Length of '%s' : %d\n", wstr1, wcslen(wstr1) );

   // A multibyte string: [A] [B] [C] [katakana A] [D] [\0]
   // in Code Page 932. For this example to work correctly,
   // the Japanese language support must be enabled by the
   // operating system.
   mbstr1 = "ABC" "\x83\x40" "D";

   locale_string = setlocale(LC_CTYPE, "Japanese_Japan");

   if (locale_string == NULL)
   {
      printf("Japanese locale not enabled. Exiting.\n");
      exit(1);
   }
   else
   {
      printf("Locale set to %s\n", locale_string);
   }

   // _mbslen will recognize the Japanese multibyte character if the
   // current locale used by the operating system is Japanese
   printf("Length of '%s' : %d\n", mbstr1, _mbslen(mbstr1) );

   // _mbstrlen will recognize the Japanese multibyte character
   // since the CRT locale is set to Japanese even if the OS locale
   // isnot. 
   printf("Length of '%s' : %d\n", mbstr1, _mbstrlen(mbstr1) );
   printf("Bytes in '%s' : %d\n", mbstr1, strlen(mbstr1) );   
  
}
  

.NET Framework-Entsprechung

System::String::Length

Siehe auch

Referenz

Zeichenfolgenbearbeitung (CRT)

Interpretation von Mehrbytezeichensequenzen

Locale

setlocale, _wsetlocale

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

strcoll-Funktionen

strcpy, wcscpy, _mbscpy

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l