collate::compare
Compares two character sequences according to their facet-specific rules for equality or inequality.
int compare(
const CharType* _First1,
const CharType* _Last1,
const CharType* _First2,
const CharType* _Last2
) const;
Parameters
_First1
Pointer to the first element in the first sequence to be compared._Last1
Pointer to the last element in the first sequence to be compared._First2
Pointer to the first element in the second sequence to be compared._Last2
Pointer to the last element in the second sequence to be compared.
Return Value
The member function returns:
–1 if the first sequence compares less than the second sequence.
+1 if the second sequence compares less than the first sequence.
0 if the sequences are equivalent.
Remarks
The first sequence compares less if it has the smaller element in the earliest unequal pair in the sequences, or, if no unequal pairs exist, but the first sequence is shorter.
The member function returns do_compare(_First1, _Last1, _First2, _Last2).
Example
// 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;
}
Sample Output
-1
1
Requirements
Header: <locale>
Namespace: std