Namespaces
Variants

std:: collate

From cppreference.net
Défini dans l'en-tête <locale>
template < class CharT >
class collate ;

La classe std::collate encapsule le collationnement (comparaison) et le hachage des chaînes spécifiques aux locales. Ce facet est utilisé par std::basic_regex et peut être appliqué, au moyen de std::locale::operator() , directement à tous les algorithmes standards qui attendent un prédicat de comparaison de chaînes.

cpp/locale/locale/facet std-collate-inheritance.svg

Diagramme d'héritage

Table des matières

Spécialisations

La bibliothèque standard garantit la fourniture des spécialisations suivantes (elles sont requises pour être implémentées par tout objet locale ):

Défini dans l'en-tête <locale>
std :: collate < char > implémente l'ordre lexicographique des chaînes d'octets
std :: collate < wchar_t > implémente l'ordre lexicographique des chaînes larges

Types imbriqués

Type Définition
char_type CharT
string_type std:: basic_string < CharT >

Membres de données

Membre Description
std::locale::id id [static] l'identifiant de la facette

Fonctions membres

construit un nouveau facet collate
(fonction membre publique)
détruit un facet collate
(fonction membre protégée)
appelle do_compare
(fonction membre publique)
appelle do_transform
(fonction membre publique)
appelle do_hash
(fonction membre publique)

Fonctions membres protégées

[virtual]
compare deux chaînes en utilisant les règles de collation de cette facette
(fonction membre protégée virtuelle)
[virtual]
transforme une chaîne pour que la collation puisse être remplacée par une comparaison
(fonction membre protégée virtuelle)
[virtual]
génère une valeur de hachage entière en utilisant les règles de collation de cette facette
(fonction membre protégée virtuelle)

Exemple

#include <algorithm>
#include <iostream>
#include <locale>
#include <string>
#include <vector>
int main()
{
    std::locale::global(std::locale("en_US.utf8"));
    std::wcout.imbue(std::locale(""));
    std::vector<std::wstring> v
    {
        L"ar", L"zebra", L"\u00f6grupp", L"Zebra",
        L"\u00e4ngel",L"\u00e5r", L"f\u00f6rnamn"
    };
    std::wcout << "Ordre de classement par défaut des paramètres régionaux : ";
    std::sort(v.begin(), v.end());
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "Ordre de classement des paramètres régionaux anglais : ";
    std::sort(v.begin(), v.end(), std::locale("en_US.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "Ordre de classement des paramètres régionaux suédois : ";
    std::sort(v.begin(), v.end(), std::locale("sv_SE.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
}

Sortie :

Ordre de classement par défaut des paramètres régionaux : Zebra ar förnamn zebra ängel år ögrupp
Ordre de classement des paramètres régionaux anglais : ängel ar år förnamn ögrupp zebra Zebra
Ordre de classement des paramètres régionaux suédois : ar förnamn zebra Zebra år ängel ögrupp

Voir aussi

compare lexicographique de deux chaînes en utilisant le facette de collation de cette locale
(fonction membre publique de std::locale )
représente le std::collate fourni par le système pour la locale nommée
(modèle de classe)