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_MAX
ist, 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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
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 LCMapString
LCMAP_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
Zeichenfolgenbearbeitung
strcoll
-Funktionen
strcmp
, wcscmp
_mbscmp
strncmp
, , wcsncmp
_mbsncmp
_mbsncmp_l