strxfrm, , wcsxfrm_strxfrm_l_wcsxfrm_l

Transformieren einer Zeichenfolge auf der Grundlage von gebietsschemaspezifischen Informationen

Syntax

size_t strxfrm(
   char *strDest,
   const char *strSource,
   size_t count
);
size_t wcsxfrm(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count
);
size_t _strxfrm_l(
   char *strDest,
   const char *strSource,
   size_t count,
   _locale_t locale
);
size_t wcsxfrm_l(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count,
   _locale_t locale
);

Parameter

strDest
Zielzeichenfolge.

strSource
Quellzeichenfolge.

count
Maximale Anzahl von Zeichen, die in strDest.

locale
Das zu verwendende Gebietsschema.

Rückgabewert

Gibt die Länge der transformierten Zeichenfolge ohne Berücksichtigung des beendenden Null-Zeichens zurück. Wenn der Rückgabewert größer als oder gleich count ist, wird der Inhalt von strDest unvorhersehbar. Bei einem Fehler legt jede Funktion errno fest und gibt INT_MAX zurück. Für ein ungültiges Zeichen wird errno auf EILSEQ festgelegt.

Hinweise

Die strxfrm-Funktion transformiert die Zeichenfolge, auf die strSource zeigt, in eine neue sortierte Form, die in strDest gespeichert ist. Höchstens count Zeichen, einschließlich des NULL-Zeichens, werden transformiert und in die Ergebniszeichenfolge eingefügt. Die Transformation erfolgt mit dem LC_COLLATE-Kategorieeinstellung des Gebietsschemas. Weitere Informationen zu LC_COLLATE finden Sie unter setlocale. strxfrm verwendet das aktuelle Gebietsschema für das Verhalten, das vom Gebietsschema abhängig ist; _strxfrm_l ist identisch, verwendet jedoch stattdessen das übergebene Gebietsschema. Weitere Informationen finden Sie unter Locale.

Nach der Transformation liefert ein Aufruf strcmp mit den beiden transformierten Zeichenfolgen ergebnisse identisch mit den Ergebnissen eines Aufrufs, der auf die ursprünglichen beiden Zeichenfolgen angewendet werden soll strcoll . Wie bei strcoll und stricoll, behandelt strxfrm Multibyte-Zeichenfolgen nach Bedarf automatisch.

wcsxfrm ist eine Breitzeichenversion von strxfrm. Die Zeichenfolgenargumente von wcsxfrm sind Zeichenfolgen mit Breitzeichen. For wcsxfrm, after the string transformation, a call to wcscmp with the two transformed strings yields results identical to the results of a call to wcscoll applied to the original two strings. wcsxfrm und strxfrm verhalten sich andernfalls identisch. wcsxfrm verwendet das aktuelle Gebietsschema für das Verhalten, das vom Gebietsschema abhängig ist; _wcsxfrm_l verwendet stattdessen das übergebene Gebietsschema.

Diese Funktionen überprüfen ihre Parameter. Wenn strSource es sich um einen Nullzeiger handelt oder strDest ein NULL Zeiger ist (es sei denn, anzahl ist null), oder wenn count er größer als INT_MAXist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben INT_MAX zurück.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tcsxfrm strxfrm strxfrm wcsxfrm
_tcsxfrm_l _strxfrm_l _strxfrm_l _wcsxfrm_l

Im Gebietsschema „C“ ist die Reihenfolge der Zeichen im Zeichensatz (ASCII-Zeichensatz) die gleiche wie die lexikografische Reihenfolge von Zeichen. In anderen Gebietsschemata kann die Reihenfolge der Zeichen im Zeichensatz jedoch von der lexikografischen Reihenfolge der Zeichen abweichen. In bestimmten europäischen Gebietsschemas steht beispielsweise das Zeichen "a" (Wert 0x61) vor dem Zeichen "ä". (Wert 0xE4) im Zeichensatz, aber das Zeichen "ä" steht vor dem Zeichen "a" lexikalisch.

In Gebietsschemata, für die sich der Zeichensatz und die lexikografische Zeichenreihenfolge unterscheiden, verwenden Sie strxfrm für die ursprünglichen Zeichenfolgen und anschließend strcmp für die resultierenden Zeichenfolgen, um einen lexikografischen Zeichenfolgenvergleich gemäß der LC_COLLATE-Kategorieeinstellung des aktuellen Gebietsschemas zu erstellen. Verwenden Sie daher zum lexikografischen Vergleich von zwei Zeichenfolgen im obigen Gebietsschema strxfrm für die ursprünglichen Zeichenfolgen und dann strcmp für die resultierenden Zeichenfolgen. Alternativ können Sie strcoll anstelle von strcmp für die ursprünglichen Zeichenfolgen verwenden.

strxfrm ist im Grunde ein Wrapper mit LCMapStringLCMAP_SORTKEY.

Der Wert des folgenden Ausdrucks ist die Größe des Arrays zum Speichern der strxfrm-Transformation der Quellzeichenfolge:

1 + strxfrm( NULL, string, 0 )

Nur im Gebietsschema strxfrm "C" entspricht es den folgenden Funktionsaufrufen:

strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );

Anforderungen

Routine Erforderlicher Header
strxfrm <string.h>
wcsxfrm <string.h> oder <wchar.h>
_strxfrm_l <string.h>
_wcsxfrm_l <string.h> oder <wchar.h>

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

Siehe auch

Datenkonvertierung
localeconv
setlocale, _wsetlocale
Gebietsschema
Zeichenfolgenmanipulation
strcoll-Funktionen
strcmp, wcscmp_mbscmp
strncmp, , wcsncmp_mbsncmp_mbsncmp_l