Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En klassmall som beskriver ett objekt som kan fungera som en språkvariant för att styra ordningen och gruppering av tecken i en sträng, jämförelser mellan dem och hashning av strängar.
Syntax
template <class CharType>
class collate : public locale::facet;
Parameterar
CharType
Den typ som används i ett program för att koda tecken.
Anmärkningar
Precis som med alla nationella aspekter har det statiska objekt-ID:t ett initialt lagrat värde på noll. Det första försöket att komma åt dess lagrade värde lagrar ett unikt positivt värde i id. På vissa språk grupperas och behandlas tecken som ett enda tecken, och i andra behandlas enskilda tecken som om de vore två tecken. De sorteringstjänster som tillhandahålls av sorteringsklassen är ett sätt att sortera dessa fall.
Konstruktörer
| Konstruktor | Beskrivning |
|---|---|
| kollationera | Konstruktorn för objekt av klass collate som fungerar som språkvariant för att hantera strängsorteringskonventioner. |
Typedefs
| Typnamn | Beskrivning |
|---|---|
| char_type | En typ som beskriver ett tecken av typen CharType. |
| string_type | En typ som beskriver en sträng av typen basic_string som innehåller tecken av typen CharType. |
Medlemsfunktioner
| Medlemsfunktion | Beskrivning |
|---|---|
| jämföra | Jämför två teckensekvenser enligt deras fasetterade regler för likhet eller ojämlikhet. |
| do_compare | En virtuell funktion som anropas för att jämföra två teckensekvenser enligt deras fasetterade regler för likhet eller ojämlikhet. |
| do_hash | En virtuell funktion som anropas för att fastställa hashvärdet för sekvenser enligt deras fasetterade regler. |
| do_transform | En virtuell funktion som anropas för att konvertera en teckensekvens från ett språk till en sträng som kan användas i lexikala jämförelser med andra teckensekvenser som på liknande sätt konverteras från samma språk. |
| hash- | Avgör hashvärdet för sekvensen enligt deras fasetterade regler. |
| transformera | Konverterar en teckensekvens från ett språk till en sträng som kan användas i lexikografiska jämförelser med andra teckensekvenser som på liknande sätt konverteras från samma språk. |
Kravspecifikation
Rubrik:<Locale>
namnområde: std
collate::char_type
En typ som beskriver ett tecken av typen CharType.
typedef CharType char_type;
Anmärkningar
Typen är en synonym för mallparametern CharType.
collate::collate
Konstruktorn för objekt av klasssortering som fungerar som språkvariant för att hantera strängsorteringskonventioner.
public:
explicit collate(
size_t _Refs = 0);
protected:
collate(
const char* _Locname,
size_t _Refs = 0);
Parameterar
_Refs
Heltalsvärde som används för att ange typ av minneshantering för objektet.
_Locname
Namnet på språkvarianten.
Anmärkningar
Möjliga värden för parametern _Refs och deras betydelse är:
0: Objektets livslängd hanteras av de nationella inställningar som innehåller det.
1: Objektets livslängd måste hanteras manuellt.
> 1: Dessa värden har inte definierats.
Konstruktorn initierar sitt basobjekt med språkvariant::facet(_Refs).
collate::compare
Jämför två teckensekvenser enligt deras fasetterade regler för likhet eller ojämlikhet.
int compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parameterar
första1
Pekare till det första elementet i den första sekvensen som ska jämföras.
senaste1
Pekare till det sista elementet i den första sekvensen som ska jämföras.
första2
Pekare till det första elementet i den andra sekvensen som ska jämföras.
senaste 2
Pekare till det sista elementet i den andra sekvensen som ska jämföras.
Returvärde
Medlemsfunktionen returnerar:
-1 om den första sekvensen jämför mindre än den andra sekvensen.
+1 om den andra sekvensen jämför mindre än den första sekvensen.
0 om sekvenserna är likvärdiga.
Anmärkningar
Den första sekvensen jämför mindre om den har det mindre elementet i det tidigaste ojämlika paret i sekvenserna, eller, om det inte finns några ojämna par, men den första sekvensen är kortare.
Medlemsfunktionen returnerar do_compare(first1, last1, first2, last2).
Exempel
// 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
En virtuell funktion som anropas för att jämföra två teckensekvenser enligt deras fasetterade regler för likhet eller ojämlikhet.
virtual int do_compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parameterar
första1
Pekare till det första elementet i den första sekvensen som ska jämföras.
senaste1
Pekare till det sista elementet i den första sekvensen som ska jämföras.
första2
Pekare till det första elementet i den andra sekvensen som ska jämföras.
senaste 2
Pekare till det sista elementet i den andra sekvensen som ska jämföras.
Returvärde
Medlemsfunktionen returnerar:
-1 om den första sekvensen jämför mindre än den andra sekvensen.
+1 om den andra sekvensen jämför mindre än den första sekvensen.
0 om sekvenserna är likvärdiga.
Anmärkningar
Den skyddade virtuella medlemsfunktionen jämför sekvensen vid [ * first1, Last1)* med sekvensen vid [ first2, last2). Den jämför värden genom att tillämpa operator< mellan par av motsvarande element av typen CharType. Den första sekvensen jämför mindre om den har det mindre elementet i det tidigaste ojämlika paret i sekvenserna eller om det inte finns några ojämna par men den första sekvensen är kortare.
Exempel
Se exemplet för collate::compare, som anropar do_compare.
collate::d o_hash
En virtuell funktion som anropas för att fastställa hashvärdet för sekvenser enligt deras fasetterade regler.
virtual long do_hash(const CharType* first, const CharType* last) const;
Parameterar
första
En pekare till det första tecknet i sekvensen vars värde ska fastställas.
senaste
En pekare till det sista tecknet i sekvensen vars värde ska fastställas.
Returvärde
Ett hashvärde av typen long för sekvensen.
Anmärkningar
Ett hash-värde kan till exempel vara användbart när du distribuerar sekvenser pseudo-slumpmässigt över en matris med listor.
Exempel
Se exemplet för hash, som anropar do_hash.
collate::d o_transform
En virtuell funktion som anropas för att konvertera en teckensekvens från ett språk till en sträng som kan användas i lexikala jämförelser med andra teckensekvenser som på liknande sätt konverteras från samma språk.
virtual string_type do_transform(const CharType* first, const CharType* last) const;
Parameterar
första
En pekare till det första tecknet i sekvensen som ska konverteras.
senaste
En pekare till det sista tecknet i sekvensen som ska konverteras.
Returvärde
En sträng som är den transformerade teckensekvensen.
Anmärkningar
Funktionen skyddad virtuell medlem returnerar ett objekt av klass string_type vars kontrollerade sekvens är en kopia av sekvensen [ first, last). Om en klass som härleds från sortering< avCharType> åsidosätter do_compare bör den också åsidosättas do_transform för att matcha. När de skickas till collate::comparebör två transformerade strängar ge samma resultat som du skulle få från att skicka de otransformerade strängarna att jämföra i den härledda klassen.
Exempel
Se exemplet för transformering, som anropar do_transform.
collate::hash
Avgör hashvärdet för sekvensen enligt deras fasetterade regler.
long hash(const CharType* first, const CharType* last) const;
Parameterar
första
En pekare till det första tecknet i sekvensen vars värde ska fastställas.
senaste
En pekare till det sista tecknet i sekvensen vars värde ska fastställas.
Returvärde
Ett hashvärde av typen long för sekvensen.
Anmärkningar
Medlemsfunktionen returnerar do_hash(first, last).
Ett hash-värde kan till exempel vara användbart när du distribuerar sekvenser pseudo-slumpmässigt över en matris med listor.
Exempel
// 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
En typ som beskriver en sträng av typen basic_string som innehåller tecken av typen CharType.
typedef basic_string<CharType> string_type;
Anmärkningar
Typen beskriver en specialisering av klassmallen basic_string vars objekt kan lagra kopior av källsekvensen.
Exempel
Ett exempel på hur du deklarerar och använder string_typefinns i transformering.
collate::transform
Konverterar en teckensekvens från ett språk till en sträng som kan användas i lexikografiska jämförelser med andra teckensekvenser som på liknande sätt konverteras från samma språk.
string_type transform(const CharType* first, const CharType* last) const;
Parameterar
första
En pekare till det första tecknet i sekvensen som ska konverteras.
senaste
En pekare till det sista tecknet i sekvensen som ska konverteras.
Returvärde
En sträng som innehåller den transformerade teckensekvensen.
Anmärkningar
Medlemsfunktionen returnerar do_transform(first, last).
Exempel
// 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