std::collate<CharT>:: transform, do_transform
|
Défini dans l'en-tête
<locale>
|
||
|
public
:
string_type transform ( const CharT * low, const CharT * high ) const ; |
(1) | |
|
protected
:
virtual string_type do_transform ( const CharT * low, const CharT * high ) const ; |
(2) | |
do_transform
de la classe la plus dérivée.
[
low
,
high
)
en une chaîne qui, comparée lexicographiquement (par exemple avec
operator<
pour les chaînes) avec le résultat de l'appel à
transform()
sur une autre chaîne, produit le même résultat que l'appel à
do_compare()
sur les deux mêmes chaînes.
Table des matières |
Paramètres
| low | - | pointeur vers le premier caractère de la séquence à transformer |
| high | - | pointeur vers la position après le dernier caractère de la séquence à transformer |
Valeur de retour
La chaîne transformée de sorte que la comparaison lexicographique des chaînes transformées puisse être utilisée à la place du classement des originaux. Dans les paramètres régionaux "C", la chaîne retournée est la copie exacte de
[
low
,
high
)
. Dans d'autres paramètres régionaux, le contenu de la chaîne retournée est défini par l'implémentation, et la taille peut être considérablement plus longue.
Notes
En plus de son utilisation dans le classement, le format spécifique à l'implémentation de la chaîne transformée est connu de std::regex_traits<>::transform_primary , qui est capable d'extraire les informations de classe d'équivalence.
Exemple
#include <iomanip> #include <iostream> #include <locale> int main() { std::locale::global(std::locale("sv_SE.utf8")); auto& f = std::use_facet<std::collate<wchar_t>>(std::locale()); std::wstring in1 = L"\u00e4ngel"; std::wstring in2 = L"\u00e5r"; std::wstring out1 = f.transform(&in1[0], &in1[0] + in1.size()); std::wstring out2 = f.transform(&in2[0], &in2[0] + in2.size()); std::wcout << "Dans la locale suédoise : "; if (out1 < out2) std::wcout << in1 << " avant " << in2 << '\n'; else std::wcout << in2 << " avant " << in1 << '\n'; std::wcout << "En comparaison lexicographique : "; if (in1 < in2) std::wcout << in1 << " avant " << in2 << '\n'; else std::wcout << in2 << " avant " << in1 << '\n'; }
Sortie :
Dans la locale suédoise : år before ängel En comparaison lexicographique : ängel before år
Voir aussi
transforme une chaîne de caractères de sorte que
strcmp
produise le même résultat que
strcoll
(fonction) |
|
transforme une chaîne de caractères larges de sorte que
wcscmp
produise le même résultat que
wcscoll
(fonction) |