Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Typ char
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. |
Definicje typów
| 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ównywać | 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. |
| hasz | Określa wartość mieszania sekwencji zgodnie z ich zasadami specyficznymi dla zestawów reguł. |
| przekształcać | 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
pierwszy
Wskaźnik do pierwszego znaku w sekwencji, którego wartość ma zostać określona.
ostatni
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
pierwszy
Wskaźnik do pierwszego znaku w sekwencji, który ma zostać przekonwertowany.
ostatni
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
pierwszy
Wskaźnik do pierwszego znaku w sekwencji, którego wartość ma zostać określona.
ostatni
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 wartość 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
pierwszy
Wskaźnik do pierwszego znaku w sekwencji, który ma zostać przekonwertowany.
ostatni
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ż
<ustawienia regionalne>
Bezpieczeństwo wątku w standardowej bibliotece C++