wcsxfrm
|
Definiert in Header
<wchar.h>
|
||
|
(bis C99)
(seit C95) |
||
| (seit C99) | ||
Transformiert die nullterminierte Breitzeichen-Zeichenkette, auf die
src
zeigt, in die implementationsdefinierte Form, sodass der Vergleich zweier transformierter Zeichenketten mit
wcscmp
das gleiche Ergebnis liefert wie der Vergleich der ursprünglichen Zeichenketten mit
wcscoll
, in der aktuellen C-Locale.
Die ersten
count
Zeichen des transformierten Strings werden in das Ziel geschrieben, einschließlich des abschließenden Nullzeichens, und die Länge des vollständigen transformierten Strings wird zurückgegeben, ohne das abschließende Nullzeichen.
Wenn
count
0
ist, dann darf
dest
ein Nullzeiger sein.
Inhaltsverzeichnis |
Hinweise
Die korrekte Länge des Puffers, die den gesamten transformierten String aufnehmen kann, ist 1 + wcsxfrm ( NULL , src, 0 )
Diese Funktion wird verwendet, wenn mehrere gebietsschemaabhängige Vergleiche mit demselben Breitzeichen-String oder Satz von Breitzeichen-Strings durchgeführt werden, da es effizienter ist,
wcsxfrm
zu verwenden, um alle Strings nur einmal zu transformieren und anschließend die transformierten Breitzeichen-Strings mit
wcscmp
zu vergleichen.
Parameter
| dest | - | Zeiger auf das erste Element einer nullterminierten Breitzeichen-Zeichenkette, in die die transformierte Zeichenkette geschrieben werden soll |
| src | - | Zeiger auf die zu transformierende nullterminierte Breitzeichen-Zeichenkette |
| count | - | maximale Anzahl der auszugebenden Zeichen |
Rückgabewert
Die Länge der transformierten Breitzeichenkette, ohne den abschließenden Nullterminator.
Beispiel
#include <stdio.h> #include <wchar.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "sv_SE.utf8"); const wchar_t *in1 = L"\u00e5r"; wchar_t out1[1+wcsxfrm(NULL, in1, 0)]; wcsxfrm(out1, in1, sizeof out1/sizeof *out1); const wchar_t *in2 = L"\u00e4ngel"; wchar_t out2[1+wcsxfrm(NULL, in2, 0)]; wcsxfrm(out2, in2, sizeof out2/sizeof *out2); printf("In the Swedish locale: "); if(wcscmp(out1, out2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); printf("In lexicographical comparison: "); if(wcscmp(in1, in2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); }
Ausgabe:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Referenzen
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.29.4.4.4 Die wcsxfrm-Funktion (S. 434-435)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.24.4.4.4 Die wcsxfrm-Funktion (S. 380-381)
Siehe auch
|
vergleicht zwei Zeichenketten gemäß dem aktuellen Gebietsschema
(Funktion) |
|
|
(C95)
|
vergleicht zwei breite Zeichenketten gemäß dem aktuellen Gebietsschema
(Funktion) |
|
(C95)
|
vergleicht zwei breite Zeichenketten
(Funktion) |
|
transformiert eine Zeichenkette, sodass strcmp das gleiche Ergebnis wie strcoll liefern würde
(Funktion) |
|
|
C++-Dokumentation
für
wcsxfrm
|
|