strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

Rufen Sie die Länge einer Zeichenfolge, unter Verwendung des aktuellen Gebietsschemas oder eines angegebenen Gebietsschemas ab.Sicherere Versionen dieser Funktionen sind verfügbar; finden Sie unter strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

Wichtiger HinweisWichtig

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

size_t strlen( const char *str ); size_t strlen_l( const char *str, _locale_t locale ); size_t wcslen( const wchar_t *str ); size_t wcslen_l( const wchar_t *str, _locale_t locale ); 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
    Auf NULL endende Zeichenfolge.

  • locale
    Zu verwendende Gebietsschema.

Rückgabewert

Jede dieser Funktionen gibt die Anzahl der Zeichen in str, ausschließlich End-NULL zurück.Kein Rückgabewert wird reserviert, um einen Fehler, außer _mbstrlen anzugeben, der ((size_t)(-1)) zurückgibt, wenn die Zeichenfolge ein ungültiges Mehrbytezeichen enthält.

Hinweise

strlen interpretiert die Zeichenfolge als Einzelbyte-Zeichenfolge, deshalb ist der Rückgabewert immer gleich der Anzahl von Bytes, auch wenn die Zeichenfolge Mehrbytezeichen enthält.wcslen ist eine Breitzeichen-Version von strlen; das Argument von wcslen ist eine Zeichenfolge mit Breitzeichen und ist die Anzahl von Zeichen in den großen 2-Byte- () Zeichen.wcslen und strlen verhalten sich andernfalls identisch.

Sicherheitshinweis diese Funktionen verursachen eine potenzielle Bedrohung, die durch ein Pufferüberlaufprobleme hin bewerkstelligt wird.Pufferüberlaufprobleme sind eine häufige Methode des Systemangriffs, Ergebnis einer autorisierten Ausweitung seine Berechtigungen ausweitet.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l

_mbslen,_mbslen_l, _mbstrlen und _mbstrlen_l geben die Anzahl der Mehrbytezeichen in einer Mehrbyte-Zeichenfolge jedoch nicht für Mehrbytezeichengültigkeit testen._mbstrlen und _mbstrlen_l Tests für Mehrbytezeichengültigkeit und erkennt Mehrbytezeichensequenzen setlocale, _wsetlocale.Wenn die Zeichenfolge, die an _mbstrlen übergeben oder _mbstrlen_l ein ungültiges Mehrbytezeichen für die Codepage enthalten, gibt sie -1 zurück und legt errno zu EILSEQ fest.

Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieneinstellung des Gebietsschemas betroffen; setlocale finden Sie weitere Informationen.Die Versionen dieser Funktionen ohne das _l Suffix verwenden das aktuelle Gebietsschema für dieses Verhalten abhängig; die Versionen mit dem _l Suffix sind identisch, allerdings verwenden den Gebietsschemaparameter, der in stattdessen übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

Anforderungen

Routine

Erforderlicher Header

strlen

<string.h>

strlen_l

<string.h>

wcslen, wcslen_l

<string.h> oder <wchar.h>

_mbslen, _mbslen_l

<mbstring.h>

_mbstrlen, _mbstrlen_l

<stdlib.h>

So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität in der Einführung.

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 Mehrbytezeichen-Sequenzen

Gebietsschema

setlocale, _wsetlocale

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

strcoll Funktionen

überprüfte, wcscpy, _mbscpy

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l