Namespaces
Variants

std:: collate

From cppreference.net
Definido en el encabezado <locale>
template < class CharT >
class collate ;

La clase std::collate encapsula la comparación (colación) y el hashing de cadenas específicos de la configuración regional. Esta faceta es utilizada por std::basic_regex y puede aplicarse, mediante std::locale::operator() , directamente a todos los algoritmos estándar que esperan un predicado de comparación de cadenas.

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

Diagrama de herencia

Contenidos

Especializaciones

La biblioteca estándar garantiza proporcionar las siguientes especializaciones (estas deben ser implementadas por cualquier objeto de configuración regional ):

Definido en el encabezado <locale>
std :: collate < char > implementa el ordenamiento lexicográfico de cadenas de bytes
std :: collate < wchar_t > implementa el ordenamiento lexicográfico de cadenas anchas

Tipos anidados

Tipo Definición
char_type CharT
string_type std:: basic_string < CharT >

Miembros de datos

Miembro Descripción
std::locale::id id [static] el identificador del facet

Funciones miembro

construye un nuevo facet collate
(función miembro pública)
destruye un facet collate
(función miembro protegida)
invoca do_compare
(función miembro pública)
invoca do_transform
(función miembro pública)
invoca do_hash
(función miembro pública)

Funciones miembro protegidas

[virtual]
compara dos cadenas usando las reglas de intercalación de esta faceta
(función miembro protegida virtual)
[virtual]
transforma una cadena para que la intercalación pueda ser reemplazada por comparación
(función miembro protegida virtual)
[virtual]
genera un valor hash entero usando las reglas de intercalación de esta faceta
(función miembro protegida virtual)

Ejemplo

#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 << "Default locale collation order: ";
    std::sort(v.begin(), v.end());
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "English locale collation order: ";
    std::sort(v.begin(), v.end(), std::locale("en_US.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
    std::wcout << "Swedish locale collation order: ";
    std::sort(v.begin(), v.end(), std::locale("sv_SE.UTF-8"));
    for (auto s : v)
        std::wcout << s << ' ';
    std::wcout << '\n';
}

Salida:

Default locale collation order: Zebra ar förnamn zebra ängel år ögrupp
English locale collation order: ängel ar år förnamn ögrupp zebra Zebra
Swedish locale collation order: ar förnamn zebra Zebra år ängel ögrupp

Véase también

compara lexicográficamente dos cadenas utilizando la faceta de colación de esta configuración regional
(función miembro pública de std::locale )
representa el std::collate proporcionado por el sistema para la configuración regional nombrada
(plantilla de clase)