locale::operator()
Сравнивает два объекта basic_string.
template<Class CharType, class Traits, class Allocator>
bool operator()(
const basic_string<CharType, Traits, Allocator >& _Left,
const basic_string<CharType, Traits, Allocator >& _Right
) const;
Параметры
_Left
Левая строка._Right
Правая строка.
Возвращаемое значение
Return функции-члена:
– 1, если первая последовательность сравнивает, чем вторая последовательность.
+1, если вторая последовательность сравнивает чем первая последовательность.
0, если в последовательности эквивалентны.
Заметки
Функция-член фактически выполняет:
const collate<CharType>& fac = use_fac<collate<CharType> >(*this);
return (fac.compare(_Left.begin( ),_Left.end( ),_Right.begin( ),_Right.end( )) < 0);
Таким образом, можно использовать объект языкового стандарта, как объект функции.
Пример
// locale_op_compare.cpp
// compile with: /EHsc
#include <iostream>
#include <string>
#include <locale>
int main( )
{
using namespace std;
wchar_t *sa = L"ztesting";
wchar_t *sb = L"\0x00DFtesting";
basic_string<wchar_t> a( sa );
basic_string<wchar_t> b( sb );
locale loc( "German_Germany" );
cout << loc( a,b ) << endl;
const collate<wchar_t>& fac = use_facet<collate<wchar_t> >( loc );
cout << ( fac.compare( sa, sa + a.length( ),
sb, sb + b.length( ) ) < 0) << endl;
}
Требования
заголовок: <locale>
std пространство имен: