std:: wcsxfrm
|
Défini dans l'en-tête
<cwchar>
|
||
|
std::
size_t
wcsxfrm
(
wchar_t
*
dest,
const
wchar_t
*
src,
std::
size_t
count
)
;
|
||
Transforme la chaîne large terminée par un zéro pointée par src dans la forme définie par l'implémentation telle que la comparaison de deux chaînes transformées avec std::wcscmp donne le même résultat que la comparaison des chaînes originales avec std::wcscoll , dans les paramètres régionaux C actuels.
Les premiers count caractères de la chaîne transformée sont écrits dans la destination, y compris le caractère nul de fin, et la longueur de la chaîne transformée complète est renvoyée, à l'exclusion du caractère nul de fin.
Si count est 0 , alors dest peut être un pointeur nul.
Table des matières |
Notes
La longueur correcte du tampon qui peut recevoir la chaîne transformée entière est 1 + std :: wcsxfrm ( nullptr, src, 0 ) .
Cette fonction est utilisée lors de multiples comparaisons dépendantes des paramètres régionaux utilisant la même chaîne large ou le même ensemble de chaînes larges, car il est plus efficace d'utiliser
std::wcsxfrm
pour transformer toutes les chaînes une seule fois, puis de comparer les chaînes larges transformées avec
std::wcscmp
.
Paramètres
| dest | - | pointeur vers le premier élément d'une chaîne large terminée par un caractère nul pour écrire la chaîne transformée |
| src | - | pointeur vers la chaîne de caractères large terminée par un caractère nul à transformer |
| count | - | nombre maximum de caractères à produire |
Valeur de retour
La longueur de la chaîne large transformée, sans inclure le caractère nul de fin.
Exemple
#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'; }
Sortie :
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Voir aussi
transforme une chaîne de caractères de sorte que
strcmp
produirait le même résultat que
strcoll
(fonction) |
|
|
[virtual]
|
transforme une chaîne de caractères pour que le tri puisse être remplacé par une comparaison
(fonction membre protégée virtuelle de
std::collate<CharT>
)
|
|
compare deux chaînes larges conformément aux paramètres régionaux actuels
(fonction) |
|
|
Documentation C
pour
wcsxfrm
|
|