Udostępnij za pośrednictwem


collate — Klasa

Szablon klasy opisujący obiekt, który może służyć jako aspekt ustawień regionalnych do kontrolowania kolejności i grupowania znaków w ciągu, porównań między nimi i skrótów ciągów.

Składnia

template <class CharType>
class collate : public locale::facet;

Parametry

Chartype
Typ używany w programie do kodowania znaków.

Uwagi

Podobnie jak w przypadku dowolnego zestawu reguł ustawień regionalnych, identyfikator obiektu statycznego ma początkową przechowywaną wartość zero. Pierwsza próba uzyskania dostępu do przechowywanej wartości przechowuje unikatową wartość dodatnią w pliku id. W przypadku niektórych języków znaki są grupowane i traktowane jak pojedynczy znak, a w innych, pojedyncze znaki są traktowane tak, jakby były dwoma znakami. Usługi sortowania dostarczane przez klasę collate umożliwiają sortowanie w tych przypadkach.

Konstruktory

Konstruktor opis
Collate Konstruktor dla obiektów klasy collate , która służy jako aspekt ustawień regionalnych do obsługi konwencji sortowania ciągów.

Typedefs

Nazwa typu opis
Char_type Typ opisujący znak typu CharType.
string_type Typ opisujący ciąg typu basic_string zawierający znaki typu CharType.

Funkcje składowe

Funkcja składowa opis
Porównać Porównuje dwie sekwencje znaków zgodnie z ich zasadami równości i nierówności specyficznymi dla zestawów reguł.
do_compare Funkcja wirtualna porównująca dwie sekwencje znaków zgodnie z ich zasadami równości i nierówności specyficznymi dla zestawów reguł.
do_hash Funkcja wirtualna wywoływana w celu określenia wartości mieszania sekwencji zgodnie z ich zasadami specyficznymi dla zestawów reguł.
do_transform Funkcja wirtualna wywoływana w celu konwersji sekwencji znaków z ustawień regionalnych na ciąg znaków, który może być używany w porównaniach leksykograficznych z innymi sekwencjami znaków podobnie przekonwertowanymi z tych samych ustawień regionalnych.
Mieszania Określa wartość mieszania sekwencji zgodnie z ich zasadami specyficznymi dla zestawów reguł.
Przekształcić Konwertuje sekwencję znaków z ustawień regionalnych na ciąg znaków, który może być używany w porównaniach leksykograficznych z innymi sekwencjami znaków podobnie przekonwertowanymi z tych samych ustawień regionalnych.

Wymagania

Nagłówek:<ustawienia regionalne>

Przestrzeń nazw: std

collate::char_type

Typ opisujący znak typu CharType.

typedef CharType char_type;

Uwagi

Typ jest synonimem parametru CharTypeszablonu .

collate::collate

Konstruktor obiektów klasy sortowania, który służy jako aspekt ustawień regionalnych do obsługi konwencji sortowania ciągów.

public:
    explicit collate(
    size_t _Refs = 0);

protected:
    collate(
const char* _Locname,
    size_t _Refs = 0);

Parametry

_Bibl
Wartość całkowita używana do określania typu zarządzania pamięcią dla obiektu.

_Locname
Nazwa ustawień regionalnych.

Uwagi

Możliwe wartości parametru _Refs i ich istotności to:

  • 0: Okres istnienia obiektu jest zarządzany przez ustawienia regionalne, które go zawierają.

  • 1: Okres istnienia obiektu musi być zarządzany ręcznie.

  • > 1: Te wartości nie są zdefiniowane.

Konstruktor inicjuje obiekt podstawowy za pomocą ustawień regionalnych::facet(_Refs).

collate::compare

Porównuje dwie sekwencje znaków zgodnie z ich zasadami równości i nierówności specyficznymi dla zestawów reguł.

int compare(const CharType* first1,
    const CharType* last1,
    const CharType* first2,
    const CharType* last2) const;

Parametry

first1
Wskaźnik do pierwszego elementu w pierwszej sekwencji do porównania.

last1
Wskaźnik do ostatniego elementu w pierwszej sekwencji do porównania.

first2
Wskaźnik do pierwszego elementu w drugiej sekwencji do porównania.

last2
Wskaźnik do ostatniego elementu w drugiej sekwencji do porównania.

Wartość zwracana

Funkcja składowa zwraca:

  • -1, jeśli pierwsza sekwencja porównuje mniej niż druga sekwencja.

  • +1, jeśli druga sekwencja porównuje mniej niż pierwsza sekwencja.

  • 0, jeśli sekwencje są równoważne.

Uwagi

Pierwsza sekwencja porównuje mniej, jeśli ma mniejszy element najwcześniejszej nierównej pary w sekwencjach lub, jeśli nie istnieją nierówne pary, ale pierwsza sekwencja jest krótsza.

Funkcja składowa zwraca do_compare( first1, last1, first2, last2).

Przykład

// collate_compare.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main() {
   locale loc ( "German_germany" );
   _TCHAR * s1 = _T("Das ist wei\x00dfzz."); // \x00df is the German sharp-s, it comes before z in the German alphabet
   _TCHAR * s2 = _T("Das ist weizzz.");
   int result1 = use_facet<collate<_TCHAR> > ( loc ).
      compare ( s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << result1 << endl;

   locale loc2 ( "C" );
   int result2 = use_facet<collate<_TCHAR> > ( loc2 ).
      compare (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );
   cout << result2 << endl;
}

collate::d o_compare

Funkcja wirtualna porównująca dwie sekwencje znaków zgodnie z ich zasadami równości i nierówności specyficznymi dla zestawów reguł.

virtual int do_compare(const CharType* first1,
    const CharType* last1,
    const CharType* first2,
    const CharType* last2) const;

Parametry

first1
Wskaźnik do pierwszego elementu w pierwszej sekwencji do porównania.

last1
Wskaźnik do ostatniego elementu w pierwszej sekwencji do porównania.

first2
Wskaźnik do pierwszego elementu w drugiej sekwencji do porównania.

last2
Wskaźnik do ostatniego elementu w drugiej sekwencji do porównania.

Wartość zwracana

Funkcja składowa zwraca:

  • -1, jeśli pierwsza sekwencja porównuje mniej niż druga sekwencja.

  • +1, jeśli druga sekwencja porównuje mniej niż pierwsza sekwencja.

  • 0, jeśli sekwencje są równoważne.

Uwagi

Chroniona funkcja wirtualnego elementu członkowskiego porównuje sekwencję [ * first1, Last1)* z sekwencją [ first2, last2). Porównuje wartości, stosując operator< pary odpowiadających im elementów typu CharType. Pierwsza sekwencja porównuje mniej, jeśli ma mniejszy element najwcześniejszej nierównej pary w sekwencjach lub jeśli nie istnieją nierówne pary, ale pierwsza sekwencja jest krótsza.

Przykład

Zobacz przykład sortowania::compare, który wywołuje metodę do_compare.

collate::d o_hash

Funkcja wirtualna wywoływana w celu określenia wartości mieszania sekwencji zgodnie z ich zasadami specyficznymi dla zestawów reguł.

virtual long do_hash(const CharType* first, const CharType* last) const;

Parametry

Pierwszym
Wskaźnik do pierwszego znaku w sekwencji, którego wartość ma zostać określona.

Ostatnio
Wskaźnik do ostatniego znaku w sekwencji, którego wartość ma zostać określona.

Wartość zwracana

Wartość skrótu typu long dla sekwencji.

Uwagi

Wartość skrótu może być przydatna, na przykład w przypadku rozkładania sekwencji pseudo-losowo na tablicę list.

Przykład

Zobacz przykład skrótu, który wywołuje metodę do_hash.

collate::d o_transform

Funkcja wirtualna wywoływana w celu konwersji sekwencji znaków z ustawień regionalnych na ciąg znaków, który może być używany w porównaniach leksykograficznych z innymi sekwencjami znaków podobnie przekonwertowanymi z tych samych ustawień regionalnych.

virtual string_type do_transform(const CharType* first, const CharType* last) const;

Parametry

Pierwszym
Wskaźnik do pierwszego znaku w sekwencji, który ma zostać przekonwertowany.

Ostatnio
Wskaźnik do ostatniego znaku w sekwencji, który ma zostać przekonwertowany.

Wartość zwracana

Ciąg, który jest przekształconą sekwencją znaków.

Uwagi

Chroniona funkcja wirtualna składowa zwraca obiekt klasy string_type , którego kontrolowana sekwencja jest kopią sekwencji [ first, last). Jeśli klasa pochodząca z collate<CharType> zastępuje do_compare, należy również zastąpić do_transform dopasowanie. Po przekazaniu do collate::comparemetody dwa przekształcone ciągi powinny zwracać ten sam wynik, który można uzyskać od przekazania nieprzetłumaczonych ciągów do porównania w klasie pochodnej.

Przykład

Zobacz przykład przekształcenia, który wywołuje metodę do_transform.

collate::hash

Określa wartość mieszania sekwencji zgodnie z ich zasadami specyficznymi dla zestawów reguł.

long hash(const CharType* first, const CharType* last) const;

Parametry

Pierwszym
Wskaźnik do pierwszego znaku w sekwencji, którego wartość ma zostać określona.

Ostatnio
Wskaźnik do ostatniego znaku w sekwencji, którego wartość ma zostać określona.

Wartość zwracana

Wartość skrótu typu long dla sekwencji.

Uwagi

Funkcja składowa zwraca do_hash( first, last).

Wartość skrótu może być przydatna, na przykład w przypadku rozkładania sekwencji pseudo-losowo na tablicę list.

Przykład

// collate_hash.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main( )
{
   locale loc ( "German_germany" );
   _TCHAR * s1 = _T("\x00dfzz abc."); // \x00df is the German sharp-s (looks like beta), it comes before z in the alphabet
   _TCHAR * s2 = _T("zzz abc."); // \x00df is the German sharp-s (looks like beta), it comes before z in the alphabet

   long r1 = use_facet< collate<_TCHAR> > ( loc ).
      hash (s1, &s1[_tcslen( s1 )-1 ]);
   long r2 =  use_facet< collate<_TCHAR> > ( loc ).
      hash (s2, &s2[_tcslen( s2 )-1 ] );
   cout << r1 << " " << r2 << endl;
}
541187293 551279837

collate::string_type

Typ opisujący ciąg typu basic_string zawierający znaki typu CharType.

typedef basic_string<CharType> string_type;

Uwagi

Typ opisuje specjalizację szablonu klasy basic_string , którego obiekty mogą przechowywać kopie sekwencji źródłowej.

Przykład

Aby zapoznać się z przykładem sposobu deklarowania i używania metody string_type, zobacz przekształcanie.

collate::transform

Konwertuje sekwencję znaków z ustawień regionalnych na ciąg znaków, który może być używany w porównaniach leksykograficznych z innymi sekwencjami znaków podobnie przekonwertowanymi z tych samych ustawień regionalnych.

string_type transform(const CharType* first, const CharType* last) const;

Parametry

Pierwszym
Wskaźnik do pierwszego znaku w sekwencji, który ma zostać przekonwertowany.

Ostatnio
Wskaźnik do ostatniego znaku w sekwencji, który ma zostać przekonwertowany.

Wartość zwracana

Ciąg zawierający przekształconą sekwencję znaków.

Uwagi

Funkcja składowa zwraca wartość do_transform(first, last).

Przykład

// collate_transform.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;

int main( )
{
   locale loc ( "German_Germany" );
   _TCHAR* s1 = _T("\x00dfzz abc.");
   // \x00df is the German sharp-s (looks like beta),
   // it comes before z in the alphabet
   _TCHAR* s2 = _T("zzz abc.");

   collate<_TCHAR>::string_type r1;   // OK for typedef
   r1 = use_facet< collate<_TCHAR> > ( loc ).
      transform (s1, &s1[_tcslen( s1 )-1 ]);

   cout << r1 << endl;

   basic_string<_TCHAR> r2 = use_facet< collate<_TCHAR> > ( loc ).
      transform (s2, &s2[_tcslen( s2 )-1 ]);

   cout << r2 << endl;

   int result1 = use_facet<collate<_TCHAR> > ( loc ).compare
      (s1, &s1[_tcslen( s1 )-1 ],  s2, &s2[_tcslen( s2 )-1 ] );

   cout << _tcscmp(r1.c_str( ),r2.c_str( )) << result1
      << _tcscmp(s1,s2) <<endl;
}

-1-11

Zobacz też

<Ustawień regionalnych>
Bezpieczeństwo wątku w standardowej bibliotece C++