std:: wcsxfrm
|
Definiert im Header
<cwchar>
|
||
|
std::
size_t
wcsxfrm
(
wchar_t
*
dest,
const
wchar_t
*
src,
std::
size_t
count
)
;
|
||
Transformiert die nullterminierte Breitzeichen-Zeichenkette, auf die src zeigt, in die implementationsdefinierte Form, sodass der Vergleich zweier transformierter Zeichenketten mit std::wcscmp das gleiche Ergebnis liefert wie der Vergleich der ursprünglichen Zeichenketten mit std::wcscoll in der aktuellen C-Locale.
Die ersten count Zeichen der transformierten Zeichenkette werden in das Ziel geschrieben, einschließlich des abschließenden Nullzeichens, und die Länge der vollständigen transformierten Zeichenkette wird zurückgegeben, ohne das abschließende Nullzeichen.
Wenn count gleich 0 ist, dann darf dest ein Nullzeiger sein.
Inhaltsverzeichnis |
Hinweise
Die korrekte Länge des Puffers, der die gesamte transformierte Zeichenkette aufnehmen kann, ist 1 + std :: wcsxfrm ( nullptr, src, 0 ) .
Diese Funktion wird verwendet, wenn mehrere gebietsschemaabhängige Vergleiche mit derselben Breitzeichen-Zeichenkette oder demselben Satz von Breitzeichen-Zeichenketten durchgeführt werden, da es effizienter ist,
std::wcsxfrm
zu verwenden, um alle Zeichenketten nur einmal zu transformieren und anschließend die transformierten Breitzeichen-Zeichenketten mit
std::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 <cwchar> #include <iostream> int main() { std::setlocale(LC_ALL, "sv_SE.utf8"); std::wstring in1 = L"\u00e5r"; std::wstring out1(1 + std::wcsxfrm(nullptr, in1.c_str(), 0), L' '); std::wstring in2 = L"\u00e4ngel"; std::wstring out2(1 + std::wcsxfrm(nullptr, in2.c_str(), 0), L' '); std::wcsxfrm(&out1[0], in1.c_str(), out1.size()); std::wcsxfrm(&out2[0], in2.c_str(), out2.size()); std::wcout << "In the Swedish locale: "; if (out1 < out2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; std::wcout << "In lexicographical comparison: "; if (in1 < in2) std::wcout << in1 << " before " << in2 << '\n'; else std::wcout << in2 << " before " << in1 << '\n'; }
Ausgabe:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Siehe auch
transformiert einen String so, dass
strcmp
das gleiche Ergebnis wie
strcoll
liefern würde
(Funktion) |
|
|
[virtual]
|
transformiert einen String, sodass Kollation durch Vergleich ersetzt werden kann
(virtuelle geschützte Memberfunktion von
std::collate<CharT>
)
|
|
vergleicht zwei Wide-Strings gemäß der aktuellen Locale
(Funktion) |
|
|
C-Dokumentation
für
wcsxfrm
|
|